想定制dz的h5小游戏竞价插件dz,可以在主流的手机浏览器玩耍的

游戏浏览器
最好用的游戏浏览器是哪个?这是很多玩网页游戏的朋友所关心的问题,那么小编这次就为大家带来这些免费网页游戏浏览器下载,网页游戏浏览器排行中有糖果游戏浏览器、265g游戏浏览器、松果游戏浏览器、175游戏浏览器等知名好用的游戏浏览器。想要知道页游浏览器哪个好,还是得靠自己试玩!小编带来游戏浏览器推荐,就是等你来下载。
游戏浏览器推荐
糖果游戏浏览器是基于糖果浏览器基础上开发的一款网页游戏浏览器,糖果浏览器性能成熟完善,在CPU使用率,内存占用上有非常出色的表现,支持纯多进程模式,在苛刻条件下使用(例如打开几十个网页)依然坚若磐石。
贝贝加速浏览器是一款用来加速网页游戏的浏览工具。该贝贝网页游戏加速器支持游戏变速、账号多开、自动练级、自动录制脚本、自动喊话等多个功能,而且运行快,让玩家尽情享受着游戏带来的乐趣。
盆友H5游戏浏览器是一款专业的H5手机页游电脑浏览器,它让你在电脑的大屏幕上也能玩到最新最热的手机页游,同时还有超多游戏辅助,更有独家辅助,操作简单,喜欢的玩家可不要错过。
胡巴游戏浏览器是新一代的网页游戏浏览器,它具有网页游戏加速、释放内存、自动喊话,一键升级、网页游戏辅助、小号多开、自动登录、鼠标连点、键鼠录播等游戏辅助功能,包含了多种百度游戏,是游戏玩家的不二选择。
雷神游戏浏览器是一款2015最新的网页游戏神器。作为专业为网页游戏定制的浏览器,雷神绝对是你的第一选择,它内置游戏加速、小号多开、自动登录、鼠标录播、后台同步等各种应有尽有的功能,你还能有什么理由拒绝呢?
精灵游戏浏览器是一款游戏专用浏览器,该浏览器可以方便玩家快速切换各种游戏,方便玩家登陆和管理多个账号,不需要通过辅助工具即可轻松手动管理多个游戏。
黑狙页游浏览器是一款专为页游玩家量身定制的专门浏览器,独特的热门游戏辅助工具专区可以对现下的多类页游进行各种辅助操作,让你在游戏内能够轻松自如的玩转。
175游戏浏览器是一款功能强大的网页游戏浏览软件。该软件操作简单,同时支持游戏加速、小号多开、自动喊话等各种功能,能够帮助用户轻松自动识别100家游戏平台和上千款网页游戏,有了它,你就可以畅游游戏带来的乐趣啦。
GT游戏浏览器是一款为游戏玩家而定制的专用浏览器。该gt浏览器支持一键登录,自动喊话,鼠标录制等功能,而且还及时更新最新最热门的游戏,让你尽情地享受游戏带来的乐趣。
新服游戏浏览器是一款专为页游玩家而考虑的浏览器,它给你提供最新的页游开服时间表,采用高强的的内核加速,减少游戏延迟,而且可以做到自动喊话,有了这个游戏浏览器,你就可以方便的玩页游了。
七星游戏浏览器是一款专门为游戏玩家打造的一款极速双核浏览器,该浏览器保留了CHROME的高效率和IE的兼容性,自动智能切换,满足用户在不同情况的上网需求。
劲玩游戏浏览器是一款专门为网页游戏而设计的网页游戏浏览器,该软件首次创新的加速功能带,让所有网页游戏玩家极速的进行游戏体验,尽情享受游戏乐趣。
175游戏浏览器极速版是一款专门为页游玩家设计的游戏浏览器,该版本相对于标准版更加稳定,而且一样提供了游戏加速、小号多开、自动喊话等网页游戏常见辅助功能。
2291游戏浏览器是一款为网页游戏用户精心打造的浏览器,这款浏览器内置多号控制、自动脚本、游戏工具以及其他工具,能够帮助页游玩家节省话费在游戏之中的之间,帮助玩家在游戏中快速成长。
v5加速浏览器是一款真正为网页游戏而设计的专用加速浏览器,完全绿色免费,安全无毒,内置上万种网页游戏,让你找游戏不用愁。全新首创的加速功能带给您极速的游戏体验,配合隐藏挂机、自动喊话、答题器、合成查询等多种游戏辅助和应用,令您可以随意控制游戏进度,尽情的享受游戏中的快感!多核心运作,根据使用情况自动切换,玩游戏、看电影、看网页,速度都是no.1!全面分析时下热门游戏,以玩家的角度,为玩家推荐最好玩的游戏,再也不担心零碎的时间无法打发。
X2游戏流浪器,顾名思义,这是就是一款专为网页游戏打造的浏览器,喜欢网游的朋友可不要错过这款简单实用的软件哦。它不仅仅拥有普通浏览器的功能,还有专门的游戏加速功能,让你玩页游无压力。
35Q游戏浏览器是一款为游戏爱好者设计的网页浏览器。该软件完美支持小号多开,游戏活动时间提醒等功能,让你轻轻松松玩游戏。
火玩游戏浏览器是一款功能强大的网页游戏浏览器。该软件有着强大的网络加速功能,能够帮助玩家更轻松畅游游戏带来的无限欢乐。
8090游戏浏览器是一款功能强大的游戏浏览器。该软件完美支持小号双开,游戏加速等常用工具一应俱全,让你更轻松地畅游网络。
趣游网游戏浏览器是一款专门为网页游戏玩家量身定制的游戏浏览器,各种给力功能,让玩家可以更快捷更方便的畅玩游戏。
速玩游戏浏览器是一款最专业的网页游戏浏览器,包含小号多开、老板键、后台喊话、超级加速等多种功能,是网页游戏玩家必备的游戏浏览器
乐侠游戏浏览器是一款智能、运行流畅的浏览器,它不仅适合用户平时的搜索浏览网页,而且还有免费的游戏辅助工具能够帮助玩家更轻松地玩游戏,功能非常实用。
泡吧游戏浏览器是一款专为网页游戏玩家打造的游戏浏览器,拥有游戏加速、网络加速、防假死、小号多开、游戏辅助、自动喊话、鼠标录播、游戏工具(老板键、闹钟、截图)等众多功能,同时向玩家实时提供最新游戏开服信息,是玩网页游戏的最佳选择。
265G游戏浏览器是一款非常好用的网页游戏浏览器,它致力于给用户带来极速的游戏体验、安全的帐号管理、全面的游戏工具和游戏辅助等,功能非常强大,还设有一键修复和强力修复,可以修复浏览器的常用问题和疑难杂症的游戏医生帮助你远离各种浏览器问题。
松果浏览器是一款适合游戏玩家的浏览器。该软件里面包含了大量的精品游戏工具,让你轻轻松松玩游戏。如果想要玩游戏的玩家不妨可以把松果游戏浏览器下载过来使用。
117game游戏浏览器是全球首家同时支持多款主流3D游戏引擎的浏览器,无须用户额外下载插件,即可直接支持包括Unity3D、寒霜等3D页游。同时,浏览器拥有游戏全屏、游戏加速、帐号多开、一键登录、游戏辅助、游戏闹钟、老板键、截图等多种实用功能,是亿万网页游戏用户的最佳选择。117game游戏浏览器自推出以来,受到大量网页游戏用户的好评和推荐,网页游戏从此进入3D时代,玩法从此改变!
游侠游戏浏览器是一款专为网页游戏打造的游戏浏览器,采用了最快速的Chromium内核。拥有游戏加速、小号多开、账号管理、录制鼠标、老板键、游戏闹钟、自动喊话、一键缓存清理等专业的游戏功能。
4D游戏浏览器是为页游玩家打造的一款浏览器,这款浏览器内置数千个页游,还具有多开、老板键、游戏攻略、闹钟、静音等等诸多功能,为广大玩家提供最贴心的服务,让玩家在游戏中更好的成长。
XGamer游戏浏览器是linebest公司自行开发的一款免费游戏浏览器,安装简单,性能强劲,为玩家量身打造的专业游戏浏览器。它聚合国内外热门网页游戏,支持qq空间等社区,与国内游戏运营商结成商务合作联盟
9173游戏浏览器是一款为网页游戏用户打造的浏览器,这款浏览器具有自动喊话、闹钟、秒表、老板键、身份证生成等等特色功能,并且还具有网络加速、flash同步等功能,能够帮助玩家更好更快的在游戏中成长。
思远游戏浏览器是一款简单易用的游戏浏览器,它可以支持小号多开,让游戏角色升级更快,而且还可以让用户随意调整浏览网页游戏或Flash小游戏的速度,让游戏运行得更加流畅!
彩云极速游戏浏览器是彩云新出的一款极速游戏浏览器,它增加了开小号功能、搜索功能、页面静音的功能和最重要的游戏变速功能!
天马游戏浏览器是北京风行在线技术有限公司(风行网)自主开发的网页游戏专用浏览器,也是国内第一款集快捷登录、游戏提速、一键修复等功能为一身的专业浏览器,很极速、方便,而且能智能解决页游中一般出现的运行卡顿、突发报错等等故障。
49游戏浏览器是一款不错的网页游戏浏览器。该软件支持自动拦截挂马、欺诈、网银仿冒等恶意网址,确实保障玩家账号利益,内置了页游的功能设计,让你轻轻松松玩游戏啦。
小四游戏浏览器是一款IE内核开发的具有各种火爆游戏辅助的网页游戏专用浏览器,功能强大,是页游玩家必备工具。
彩云游戏浏览器专业的只为游戏设计的浏览器,它有以下功能: 1.非外挂手动操作QQ农场,不会降级2.一键获取搜索信息,简单快捷3.自动记录聊天工具的账号,一键即可登录 4.还有游戏加速,方便的大小号管理等功能。
387网页游戏加速浏览器是一款专为网页游戏发烧友开发的无插件、纯绿色加速浏览器。本浏览器兼容IE6、IE7、IE8、IE9等所有IE内核,支持500多款网页游戏加速,是1.45亿网页游戏玩家的共同选择!
易游游戏浏览器是一款可以让用户更方便更流畅的玩转网页游戏的浏览器, 该网页游戏多开浏览器自带游戏加速器,最高加速2000%让你的角色飞起来。内置10万种网页游戏,还有热门游戏推荐,新服推荐,让用户想玩什么玩什么,怎么体验都是爽,怎么玩都痛快。
哇塞游戏浏览器是一款好用的网页游戏专用浏览器!哇塞游戏浏览器采用先进的技术针对各种热门游戏进行了优化,帮助用户以最好的体验玩游戏。
真酷游戏浏览器是一款专为网页游戏打造的双核游戏浏览器,更快速、更安全、更稳定、更个性,拥有游戏变速、小号多开、多屏显示、浮窗显示、一键登录、定时提醒等游戏功能。
65网页游戏浏览器是一款非常专业的网页游戏浏览器,它有强大的小号多开功能,还能根据玩家所玩的游戏量身推送最新攻略、游戏辅助、游戏礼包、最新开服等信息。
玩客游戏浏览器拥有稳定加速支持测试通过上万个网页游戏,近乎所有页面游戏加速支持。100%至2000%最大调节,微调至10%加速,新手与达人都可用。网页游戏专用浏览器自动推送每天最新最热游戏。游戏不落伍,娱乐不掉队。准确通知开服时间,急速推荐,游戏跑在最前面!
极速游戏浏览器是一款可以辅助玩家玩网页游戏的辅助工具。该浏览器支持游戏加速、大小号管理、老板键、自动刷新、个性头像等各种功能,让你轻松地玩遍千款热门的游戏。
BVG网页游戏浏览器是一款由BVG页游工作室研发的网页游戏专属浏览器程序。BVG浏览器基于IE内核优化设计,优化IE内核,针对flash进行优化,兼容性大大提高,游戏运行更佳流畅。DIY傻瓜版自助挂机,可以很简单的自助设计脚本完成挂机,多页面浏览时智能防崩溃系统。
囧囧网页游戏加速浏览器的功能特点:1,在游戏中,可随心调整游戏速度!让 您在游戏中升级,移动,打怪速度加 快,节省任务时间!2,拥有自动喊话功能,不用再为一直重 复喊话发愁,让你在游戏中帮派招人, 交易更加省心!3,内核加速,提高网页浏览速度,从根本上解决玩家登陆难,内存释放 长时间游戏造成内存使用量过高,内存崩溃,游戏缓慢等问题一键帮您解决(低配电脑也能畅玩)等4,游戏全屏,让你的网页游戏变成2d网络游戏,缓存清理 游戏修复清理 不求人。
360游戏浏览器的使用完全无需任何费用,他快速,小巧,安全,易操作,并且没有任何限制。使用“360沙箱”技术,任何访问,浏览都隔离在单独的“沙箱”中,病毒,木马无法对系统造成伤害。并且还集成了恶意代码智能拦截、恶意网站自动报警、下载文件即时扫描,广告窗口智能过滤等强劲功能,是目前世界上最安全的浏览器,这款浏览器专为游戏用户设计,除上述功能外,能让你更好的体验游戏乐趣。
网页游戏浏览器,工作时间挂机浏览器
热门专题推荐
Copyright (C)
www.downxia.com.All rights reserved.一、项目简介
1.1、项目背景: 这是一个在移动终端创新应用的项目,用户在浏览器端(微信/手Q)即可完成与金秀贤的合影,希望通过这样一种趣味体验,引发用户的分享与转发的热潮。
1.2、系统要求: ios6-ios7、android3.0-android4.3、android4.4+(非webview内)
1.3、体验地址:
二、初步技术方案确定
在项目前期首先启动了技术预演,确定初步技术方案(*非最终解决方案):
2.1、获取用户照片数据2.1.1、首先放弃了主动获取用户摄像头的getUserMedia,因为移动终端支持率太低;2.1.2、确定使用Input控件获取照片文件、使用FileReader读取照片数据,android3.0+、ios6.0+都可以支持。
2.2、编辑合成照片 2.2.1、放弃使用canvas编辑(即将图像数据读取到canvas内进行处理)照片,考虑到开发成本成高;2.2.2、选用dom编辑(img标签),然后使用html2canvas,方便保存数据。
2.3、保存并上传照片 确定使用canvas的toDataURL接口,提交base64数据到服务器。
三、碰到的那些坑儿
按照既定的技术方案开始执行,开始碰到一个个问题,有些问题可以绕过,有些问题只能推倒重来。
3.1、照片方向反了(如下图所示)问题描述: 手持设备不同方向所拍摄的照片方向不同,照片的方向都会不同,但相册中会自动纠正,这一问题在ios和android中都存在。 问题解决:3.1.1、将图片数据转换成二进制数据,方便获取图片的exif信息;(这里我引入了&)3.1.2、获取图片的exif信息;(这里我使用了 )3.1.3、通过图片exif信息,获取图片拍摄时所持设备方向orientation。 关键代码:
var fr = new FileReader();
fr.readAsDataURL(file);
fr.onload = function(fe){
var result = this.
var img = new Image();
img.onload = function() {
var orientation = exif ? exif.Orientation : 1;
switch(orientation) {
imgRotation = 180;
imgRotation = 90;
imgRotation = 270;
var base64 = result.replace(/^.*?,/,'');
var binary = atob(base64);
var binaryData = new BinaryFile(binary);
exif = EXIF.readFromBinaryFile(binaryData);
3.2、html2canvas问题重重问题背景:为什么要用呢,因为我们需要将用户合成照片后的base64数据提交服务器,所以我们需要通过转换为canvas获取照片数据。问题详情:3.2.1、图片使用css3&transform旋转了图片方向,但最终html2canvas渲染结果却未保存旋转信息;3.2.2、html2canvas的渲染起点为网页右上角,而且不能更改设置;3.2.3、ios大图被压扁了。问题解决:但最终因为碰到太多无法绕过的问题,不得不放弃html2canvas的方案,全部转为canvas开发。
3.3、ios大图被压扁了问题详情: 当照片超过2M时,ios会出现压扁的情况(如下图所示)问题解决: 获取图片实际比例,重置图片的比例。() 需要注意的是,ratio的获取是通过检测像素alpha,需要过滤png图片,这在stack overflow的讨论上没有人提出。 关键代码:
var getRatio = function(img) {
if(/png$/i.test(img.src)) {
var iw = img.naturalWidth, ih = img.naturalH
var canvas = document.createElement('canvas');
canvas.width = 1;
canvas.height =
var ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);
var data = ctx.getImageData(0, 0, 1, ih).
var sy = 0;
while (py & sy) {
var alpha = data[(py - 1) * 4 + 3];
if (alpha === 0) {
py = (ey + sy) && 1;
var ratio = (py / ih);
return (ratio===0)?1:
3.4、照片太模糊啦,我想提高精度!问题描述:如上图所示,为了减少本地内存消耗,项目最初采用尺寸是320x270。在项目上线后,在确保内存占用不过高的情况下,开始尝试开发高清方案,测试地址如下:在主流设备上测试,性能并无太大问题,但当网络切换为3g时,测试图片合并上传时间8-12s,是原来时间的3倍左右,于是测试了一下3g网络的上传速度:
平常会留意用户的下载速度,但对上传速度没太在意,640x540图片的base64数据大小为120kb左右,加上延时,3g环境下平均上传时间是5s左右。于是,上传速度成为了高清方案的瓶颈。
解决方案:3.4.1、在微信和手Q环境中检测用户环境如果为wifi,则启用高清方案,但由于在这个网站推广的渠道很多,环境复杂,并不能完全解决问题,所以放弃了该解决方式;3.4.2、在上传前对base64数据进行文本压缩,目前正在尝试lz77压缩,未上线。
3.5、canvas toDataURL bug问题描述: 已测试,至少在手机QQ浏览器中,canvas对象使用toDataURL方法获取不到任何数据。问题解决: 使用将图片像素数据转换为base64数据。关键代码:
_public.toDataURL&= function(callback){
var self = this;
self.unSelect();
window.setTimeout(function(){
var&encoder&=&new&JPEGEncoder();
var data =&encoder.encode(self.canvas.getContext('2d').getImageData(0,0,self.stage.width,self.stage.height),&90);
callback.call(self, data);
}, 1000/self.config.fps)
3.6、当getElementOffset遇上transform问题代码:
Quark.getElementOffset = function(elem)
var left = elem.offsetLeft, top = elem.offsetT
while((elem = elem.offsetParent) && elem != document.body && elem != document)
left += elem.offsetL
top += elem.offsetT
return {left:left, top:top};
问题描述:当目标元素的上级元素中有使用transform:translate(x,y)时,用如上的方法都会导致offset计算错误,这一bug在常用canvas框架EaseJS、QuarkJS,DOM类库Zepto中都存在。我项目中使用的是QuarkJS,碰到具体问题是舞台事件坐标不正确,由于是框架中的bug,足足花了半天时间才追查到。 问题解决: offsetLeft或offsetTop需要减去translate的差值。
四、项目总结&
4.1、最终技术方案4.1.1、获取用户照片数据 使用Input控件获取照片文件、使用FileReader读取照片数据,android3.0+、ios6.0+都可以支持。4.1.2、编辑合成照片4.1.2.1、使用canvas编辑图片,使用canvas框架为QuarkJS;4.1.2.2、使用binaryajax和exif获取照片信息,用于解决ios bug和照片方向调整;4.1.3、保存并上传照片4.1.3.1、使用JPEGEncoder转换为base64数据;4.1.3.2、使用lz77进行数据压缩
这个项目进行得并不顺利,经历过1次推翻整体方案重写、1次框架bug纠错、多次系统和浏览器的bug修复,由于线上并没有此类相对成熟的应用,找不到可参考案例,吐槽之余,也总结出一些心得:
4.2.1、对于创新类的应用,前期技术预演很关键,不能只是探索可行性;4.2.2、选择一个成熟的框架很关键,QuarkJS虽然本身架构不错并且很轻量,但使用它的过程中还是碰到过不少bug或不完善之处,并且文档不详细;4.2.3、需要善于利用现有技术。这个项目中使用了不少第三方框架来解决特定问题,如果没有这些,项目周期将会相当长。4.2.4、H5从图像到音频到视频,还有太多领域值得探索,有很大可挖掘的价值,想想都有点小兴奋呢!
4.3、图片编辑类整体代码
tg.add('tg.ImageEditor:tg.Base', function() {
var _public = this;
var _private = {};
var _static = this.
_public.constructor = function(config) {
this.config = Zepto.extend(true, {}, _static.config, config);
this.init();
_static.config = {
width: 320,
height: 320,
_public.init = function(){
var self = this;
var config = self.
self.effect && self.on(self.effect);
config.event && self.on(config.event);
if(self.trigger('beforeinit') === false) {
var canvas = Quark.createDOM('canvas', {
width: config.width,
height: config.height,
style: {backgroundColor:"#fff"}
canvas = $(canvas).appendTo(config.container)[0];
var context = new Quark.CanvasContext({canvas:canvas});
self.stage = new Quark.Stage({width:config.width, height:config.height, context:context});
self.canvas =
self.context =
var em = this.em = new Quark.EventManager();
em.registerStage(self.stage, ['touchstart', 'touchmove', 'touchend'], true, true);
self.stage.stageX = config.stageX !== window.undefined ? config.stageX : self.stage.stageX;
self.stage.stageY = config.stageY !== window.undefined ? config.stageY : self.stage.stageY;
var timer = new Quark.Timer(1000/config.fps);
timer.addListener(self.stage);
timer.addListener(Quark.Tween);
timer.start();
var bg = new Q.Graphics({width:config.width, height:config.height});
bg.beginFill("#fff").drawRect(0, 0, config.width, config.height).endFill().cache();
self.stage.addChild(bg)
_private.attach.call(self);
_private.attach = function(){
var self = this;
var config = self.
config.trigger.on('change', function(e){
self.trigger('beforechange');
var file = this.files[0];
if(file.type && !/image\/\w+/.test(file.type)){
alert('请选择图片文件!');
return false;
var fr = new FileReader();
fr.readAsDataURL(file);
fr.onload = function(fe){
var result = this.
var img = new Image();
img.onload = function() {
self.addImage({img: img, exif: exif});
self.trigger('change');
var base64 = result.replace(/^.*?,/,'');
var binary = atob(base64);
var binaryData = new BinaryFile(binary);
exif = EXIF.readFromBinaryFile(binaryData);
self.stage.addEventListener('touchstart', function(e){
if(self.imgs) {
for(var i = 0; i & self.imgs. i++) {
self.imgs[i].disable();
if(e.eventTarget && e.eventTarget.parent.enEditable) {
e.eventTarget.parent.enEditable();
self.activeTarget = e.eventTarget.
self.stage.addEventListener('touchmove', function(e){
var touches = e.rawEvent.touches || e.rawEvent.changedT
if(e.eventTarget && (e.eventTarget.parent == self.activeTarget) && touches[1]) {
var dis = Math.sqrt(Math.pow(touches[1].pageX - touches[0].pageX, 2) + Math.pow(touches[1].pageY - touches[0].pageY, 2) );
if(self.activeTarget.mcScale.touchDis) {
var scale = dis / self.activeTarget.mcScale.touchDis -1;
if( self.activeTarget.getCurrentWidth() & 100 && scale & 0) {
scale = 0;
self.activeTarget.scaleX +=
self.activeTarget.scaleY +=
self.activeTarget.mcScale.touchDis =
self.stage.addEventListener('touchend', function(){
if(self.activeTarget && self.activeTarget.mcScale) {
delete self.activeTarget.mcScale.touchD
_public.addImage = function(info){
var self = this;
var config = self.
var img = info.
var exif = info.
var imgWidth = img.
var imgHeight = img.
var imgRotation = 0;
var imgRegX = 0;
var imgRegY = 0;
var imgX = 0;
var imgY = 0;
var posX = info.pos ? info.pos[0] : 0;
var posY = info.pos ? info.pos[1] : 0;
var imgScale = 1;
var orientation = exif ? exif.Orientation : 1;
var getRatio = function(img) {
if(/png$/i.test(img.src)) {
var iw = img.naturalWidth, ih = img.naturalH
var canvas = document.createElement('canvas');
canvas.width = 1;
canvas.height =
var ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);
var data = ctx.getImageData(0, 0, 1, ih).
var sy = 0;
while (py & sy) {
var alpha = data[(py - 1) * 4 + 3];
if (alpha === 0) {
py = (ey + sy) && 1;
var ratio = (py / ih);
return (ratio===0)?1:
var ratio = getRatio(img);
if(typeof img == 'string') {
img = new Image();
switch(orientation) {
imgRotation = 180;
imgRegX = imgW
imgRegY = imgHeight *
imgRotation = 90;
imgWidth = img.
imgHeight = img.
imgRegY = imgWidth *
imgRotation = 270;
imgWidth = img.
imgHeight = img.
imgRegX = imgHeight *
if(/iphone|ipod|ipad/i.test(navigator.userAgent)) {
alert('苹果系统下暂不支持你以这么萌!萌!达!姿势拍照!');
imgWidth *=
imgHeight *=
if(imgWidth & self.stage.width) {
imgScale = self.stage.width / imgW
imgWidth = imgWidth * imgS
imgHeight = imgHeight * imgS
imgContainer = new Quark.DisplayObjectContainer({width: imgWidth, height: imgHeight});
imgContainer.x = posX;
imgContainer.y = posY;
img = new Quark.Bitmap({image:img, regX:imgRegX, regY:imgRegY});
img.rotation = imgR
img.x = imgX;
img.y = 0;
img.scaleX = imgScale *
img.scaleY = imgS
if(config.iconScale && !info.disScale) {
var iconScaleImg = new Image();
iconScaleImg.onload = function(){
var rect = config.iconScale.
mcScale = new Quark.MovieClip({image:iconScaleImg});
mcScale.addFrame([{rect: rect}]);
mcScale.x = imgWidth - rect[2];
mcScale.y = 0;
mcScale.alpha = 0.5;
mcScale.visible = false;
mcScale.addEventListener('touchstart', function(e){
mcScale.scaleable = true;
mcScale.startX = e.eventX;
mcScale.startY = e.eventY;
mcScale.alpha = 0.8;
var curW = imgContainer.getCurrentWidth();
var scaleMove = function(e){
if(mcScale.scaleable) {
var disX = e.eventX - mcScale.startX;
var scaleX = (curW+disX)/imgContainer.
if( imgContainer.getCurrentWidth() & 100 && imgContainer.scaleX & scaleX) {
imgContainer.scaleX = scaleX;
imgContainer.scaleY = scaleX;
var disOriX = e.eventX - imgContainer.x;
var disOriY = e.eventY- imgContainer.y;
var rotate = Math.atan2(disOriY,disOriX) * 360 / (2 * Math.PI);
imgContainer.rotation = parseInt(rotate/1)*1;
var scaleEnd = function(e) {
mcScale.scaleable = false;
mcScale.alpha = 0.5;
self.stage.removeEventListener('touchmove', scaleMove);
self.stage.removeEventListener('touchend', scaleEnd);
self.stage.addEventListener('touchmove', scaleMove);
self.stage.addEventListener('touchend', scaleEnd);
imgContainer.mcScale = mcS
imgContainer.addChild(mcScale);
iconScaleImg.src = config.iconScale.
var border = new Q.Graphics({width:imgWidth+10, height:imgHeight+10, x:-5, y:-5});
border.lineStyle(5, "#aaa").beginFill("#fff").drawRect(5, 5, imgWidth, imgHeight).endFill().cache();
border.alpha = 0.5;
border.visible = false;
imgContainer.addChild(border);
if(config.iconClose) {
var iconCloseImg = new Image();
iconCloseImg.onload = function(){
var rect = config.iconClose.
mcClose = new Quark.MovieClip({image:iconCloseImg});
mcClose.addFrame([{rect: rect}]);
mcClose.x = 0;
mcClose.y = 0;
mcClose.alpha = 0.5;
mcClose.visible = false;
mcClose.addEventListener('touchstart', function(e){
mcClose.alpha = 0.8;
mcClose.addEventListener('touchend', function(e){
self.stage.removeChild(imgContainer);
self.stage.addEventListener('touchend', function(e){
mcClose.alpha = 0.5;
imgContainer.addChild(mcClose);
iconCloseImg.src = config.iconClose.
if(!info.disMove && !info.disable) {
img.addEventListener('touchstart', function(e){
img.curW = imgContainer.getCurrentWidth();
img.curH = imgContainer.getCurrentHeight();
img.moveabled = true;
img.startX = e.eventX;
img.startY = e.eventY;
fnMove = function(e){
var isScale = e.rawEvent && e.rawEvent.touches[1];
if(img.moveabled && !isScale) {
var disX = e.eventX - img.startX;
var disY = e.eventY - img.startY;
var setX = imgContainer.x + disX;
var setY = imgContainer.y + disY;
var diffX = 0, diffY = 0;
if(setX & -img.curW/2 + 5 && disX & 0) {
setX = -img.curW/2;
if(setY & -img.curH/2 + 5 && disY & 0) {
setY = -img.curH/2;
if(setX & -img.curW/2 + self.stage.width - 5 && disX & 0) {
setX = self.stage.width - img.curW/2;
if(setY & self.stage.height - 5 && disY & 0) {
setY = self.stage.
imgContainer.x = setX;
imgContainer.y = setY;
img.startX = e.eventX;
img.startY = e.eventY;
fnEnd = function(){
img.moveabled = false;
self.stage.addEventListener('touchmove');
self.stage.addEventListener('touchend');
self.stage.addEventListener('touchmove', fnMove);
self.stage.addEventListener('touchend', fnEnd);
imgContainer.enEditable = function(){
if(info.disable) {
border.visible = true;
if(mcScale) {
mcScale.visible = true;
if(mcClose) {
mcClose.visible = true;
imgContainer.disable = function(){
border.visible = false;
if(mcScale) {
mcScale.visible = false;
if(mcClose) {
mcClose.visible = false;
img.update = function(){
if(imgContainer && imgContainer.scaleX) {
if(mcScale && mcScale.scaleX) {
mcScale.scaleX = 1/imgContainer.scaleX;
mcScale.scaleY = 1/imgContainer.scaleY;
mcScale.x = border.getCurrentWidth() - 10 - mcScale.getCurrentWidth();
if(mcClose && mcClose.scaleX) {
mcClose.scaleX = 1/imgContainer.scaleX;
mcClose.scaleY = 1/imgContainer.scaleY;
mcClose.x = 0;
imgContainer.addChild(img);
self.stage.update = function(){
imgContainer.update = function(){
self.stage.addChild(imgContainer);
if(self.imgs) {
self.imgs.push(imgContainer);
self.imgs = [imgContainer];
return imgC
_public.clear = function(){
if(this.imgs) {
for(var i = 0; i & this.imgs. i++) {
this.stage.removeChild(this.imgs[i]);
_public.unSelect = function(){
var imgs = this.
if(imgs) {
for(var i = 0; i & imgs. i++) {
imgs[i].disable();
_public.toDataURL&= function(callback){
var self = this;
self.unSelect();
window.setTimeout(function(){
var&encoder&=&new&JPEGEncoder();
var data =&encoder.encode(self.canvas.getContext('2d').getImageData(0,0,self.stage.width,self.stage.height),&90);
callback.call(self, data);
}, 1000/self.config.fps)
分享到 &   
LAST WORKS
ideas第09期
Webpage Designed by TGodeas-腾讯游戏官方设计团队
Copyright & 2011. All Rights Reserved.

我要回帖

更多关于 dz点击浏览加积分插件 的文章

 

随机推荐