Adobe Air是Adobe公司用来争夺移动设备应用开发的一个重要武器。移动设备的一个重要体验是手指滑移,但Adobe并没有为Air推出官方滑移的SDK。 所以,若打算用Air来开发移动应用,则会碰到滑移这个问题。以下是对基于Air滑移的一些基本原理及其优化方案的讨论
Adobe Air是Adobe公司用来争夺移动设备应用开发的一个重要武器。移动设备的一个重要体验是手指滑移,但Adobe并没有为Air推出官方滑移的SDK。
所以,若打算用Air来开发移动应用,则会碰到滑移这个问题。以下是对基于Air滑移的一些基本原理及其优化方案的讨论,本文最后会给出一个示例。
基本原理

上图说明了滑移的显示列表。
ScrollBg是整个滑移的背景,手指在此进行操作,它是侦听手指滑移事件的目标。
ScrollTarget是需要进行滑移的对象,其父为ScrollBg。p1,p2和p3为内部的显示对象。
ScrollMask是滑移对象的mask,用于对滑移对象形成遮罩,其父为ScrollBg。
综上,我们需要在ScrollBg上侦听用户手指事件,对ScrollTarget进行滑移,在滑移时我们只能看到被ScrollMask遮罩的那部分。
手指按下处理
手指滑移处理
手指离开处理
在Adobe Air里,MouseEvent等同于手指触摸的TouchEvent,而只有在需要多点触控时,TouchEvent才有其特有的优势。所以我们侦听MouseEvent即可以侦听用户的手指操作。
通常情况下,手指按下是整个滑移过程的开始。我们可以侦听MouseDown事件来模拟手指按下。
在MouseDown侦听器里我们还要添加一系列事件侦听器,来构成整个滑移过程的侦听。
我们需要知道用户的手指移动,于是需要侦听MouseMove事件。我们还需要知道用户手指的释放,于是需要侦听RollOut和MouseUp事件。此外,我们还可能需要侦听EnterFrame事件,来做一些内部的更新逻辑。
综上,我们在MouseDown侦听器里处理滑移的开始,并为手指移动,手指释放及每帧更新等事件添加侦听器。
在MouseMove事件侦听器里,我们需要让滑移对象跟随玩家的手指进行移动。
所以在添加MouseMove侦听器之前,我们需要事先记录滑移对象当前的位置信息(诸如mouseX,mouseY),并在MouseMove侦听器对滑移对象的位置进行记录,通过两个位置的差异,我们可以计算出滑移对象需要移动的距离。
若需要移动的距离在合理的范围之内(如:不超过边界值的一半大小),我们将对滑移对象的位置进行改变,并进行更新。
有时候,我们可能会对滑移对象内的对象添加点击事件,但是我们不希望在滑移释放手指的时候触发这些点击事件。这时候我们可以在MouseMove侦听器里通过计算滑移对象的移动距离,来判断是否应该触发点击事件。
比如若用户的手指只移动了1-2个像素,用户很可能只是希望点击,而非滑移,所以此时我们不进行处理;但是用户的手指移动了10个以上像素,则我们可以认为用户是在进行滑移操作,此时我们将滑移对象的mouseChildren和mouseEnabled属性禁用,则点击事件则不会在滑移时触发了。
综上,我们在MouseMove侦听器里记录手指的位置,更新滑移对象的位置以跟随手指移动,做一些特殊处理以避免滑移时让用户触发点击事件。
我们可以将RollOut事件和MouseUp事件视为用户手指离开了滑移触发区域,从而为这两个事件添加一个共同的侦听器MouseLeaveHandler。
在ios和android的原生滑移里,当用户滑移时手指离开屏幕,系统会对滑移对象进行自动滑移,这类似于物理中的惯性。
所以我们需要对滑移对象进行一个类似“惯性”的缓动,并在缓动结束的时候,做一些滑移结束的处理。
同时释放MouseMove和MouseLeaveHandler的侦听,并重新添加MouseDown事件的侦听,来侦听新的滑移。
综上,我们在MouseLeaveHandler里移除MouseMove和手指移开的事件侦听,并对滑移对象做一个”惯性”的缓动,在缓动结束时,做滑移结束的处理。
优化方案
相对于其他移动开发的引擎,Flash的渲染效率较低,在弱CPU的移动设备上体现尤其明显。
滑移需要移动大块显示区域,可能会造成卡顿和跳帧,所以优化是必须要进行的一项工作。
以下是一些我在实践总结出来的优化方案。
切换为GPU模式
经试验,将大面积滑移从cpu模式切换到gpu模式后,滑移的效率显著的提升了,基本可以达到原生滑移的效果。
只需要修改-app.xml里面的
gpuGPU模式的优点是处理大块渲染区域移动的效率会显著提升。 缺点是不能使用滤镜,不能使用混合模式,在某些android机型(基本是低端机)上可能会跑不起来。 其中滤镜可以用位图替代,但是可能会带来内存上升的问题。
在滑移时降低显示质量
相对于PC屏幕,移动设备屏幕的ppi值要高很多。这就意味着,当我们在移动设备上降低显示质量时,实际感觉画质效果并没有PC上丢失的那么多。 所以在滑移开始时,我们可以先降低舞台显示质量。
stage.quality = StageQuality.LOW;
等滑移结束时,再恢复舞台显示质量。
此方案带来的效率提升也是显著的。
但是会显著的降低显示质量,所以需要在效率和效果方面做取舍。
减少渲染区域
减少渲染区域可以从根本上解决渲染压力的问题。
实际上,在滑移时,有许多区域都在遮罩区域之外,但这些人眼不可见的区域的位置仍然会被CPU计算,从而浪费CPU周期,降低了效率。
所以,我们可以在EnterFrame事件里,将在遮罩区域之外的滑移对象的visible设为false。从而避免了它们占用CPU周期。
以下代码片段说明以上的方法。
var i:int; var numChildren:int = _target.numChildren; var child:DisplayObject; for(i = 0; i _bounds.bottom + MAX_VISIBLE_DIST ) { child.visible = false; } else { child.visible = true; } } else if( _direct == ScrollDirection.HORIZONTAL || _direct == ScrollDirection.BOTH ) { if( child.x + child.width + _target.x _bounds.right + MAX_VISIBLE_DIST ) { child.visible = false; } else { child.visible = true; } } }
尽可能使用位图而非矢量
减少事件侦听
示例
示例:http://wuzhiwei.net/opensrc/ScrollAs3/ScrollAs3.html源码:https://github.com/iWoz/AirScroll
原文地址:浅谈Adobe Air滑移及其优化, 感谢原作者分享。

AdobePhotoshop使用您系统上的图形处理器来渲染3D效果等等。拥有一张好的显卡是流畅运行AdobePhotoshop的额外优势。但是,如果AdobePhotoshop甚至无法识别您系统上的显卡怎么办?导致这个问题的原因有很多。但是,没有什么可担心的。只需按照这些简单的说明,只需几个快速步骤即可让Photoshop检测GPU。修复1–将应用程序设置为使用专用GPU如果您的系统上有两个GPU,则必须将Photoshop设置为使用专用GPU。1.关闭

使用RestoroPCRepairTool修复Windows11操作系统错误:该软件通过将有问题的系统文件替换为初始工作版本来修复常见的计算机错误。它还使您远离严重的文件丢失、硬件故障以及由恶意软件和病毒造成的损坏。现在只需3个简单的步骤即可修复PC问题并删除病毒:下载带有专利技术的RestoroPC修复工具(此处提供专利)。单击开始扫描以查找可能导致PC问题的Windows11问题。单击全部修复以修复影响计算机安全和性能的问题本月有793,675名读者下载了R

强大的人工智能功能将重振增长前景,这可能会使Adobe的业绩得到兑现!在本周的AdobeMAX年度创意大会上,软件科技巨头Adobe宣布了一系列新的AI工具和服务,并在与分析师的讨论中表示,第四财季将是一个非常强劲的季度具体来看,Adobe展示了AI视频编辑技术ProjectFastFill,用户只需输入文字提示,就能在几秒钟内删除、添加对象或更改背景元素,减少了大量的琐碎工作。此外,Adobe推出了三个新的生成式人工智能模型,图片编辑功能获得全面升级。新发布的FireflyVector汇集了A

很多用户办公中都在使用AdobeIllustratorCS6软件,那么你们知道AdobeIllustratorCS6怎样设置键盘增量吗?接着,小编就为大伙带来了AdobeIllustratorCS6设置键盘增量的方法,感兴趣的用户快来下文看看吧。第一步:启动AdobeIllustratorCS6软件,如下图所示。第二步:在菜单栏中,依次单击【编辑】→【首选项】→【常规】命令。第三步:弹出【键盘增量】对话框,在【键盘增量】文本框中输入需要的数字,最后单击【确定】按钮。第四步:使用快捷键【Ctrl】

本章节为你们带来的文章是关于MacromediaFlash8软件的,你们晓得MacromediaFlash8线条工具怎么使用吗?下文就是小编为各位带来的MacromediaFlash8线条工具使用的方法,对此感兴趣的用户快来下文看看吧。单击flash工作舞台,然后单击“属性”键下拉框打开属性控制面板在属性控制面板中找到颜色选择框,点击它选择背景色在弹出来的颜色选择框中输入"#99FF66",之后敲键盘中的“ENTER”(回车键)应用颜色找到工具选择栏,选择“线条”工具在属性控制面板中找到颜色选择

近期有很多小伙伴咨询小编AdobeReaderXI怎么删除最近打开的文件,接下来就让我们一起学习一下AdobeReaderXI删除最近打开文件的方法教程吧,希望可以帮助到大家。第一步:首先"win+R"快捷键打开运行输入"regedit",回车打开,如图所示。第二步:进入新界面后,依次点击左侧的"HKEY_CURRENT_USERSoftwareAdobeAcrobatReader11.0AVGeneralcRecentFiles",选中"c1"右击选择"删除"选项,如图所示。第三步:接着在弹出

有很多朋友还不知道AdobePhotoShopCS6如何设置图片边缘渐隐,所以下面小编就讲解了AdobePhotoShopCS6设置图片边缘渐隐的方法教程,有需要的小伙伴赶紧来看一下吧,相信对大家一定会有所帮助哦。第一步:首先我们导入想修改的图片,并选择左边的魔棒工具,如图所示。第二步:然后使用魔棒选中“图片外轮廓区域”,如图所示。第三步:选中后鼠标右键点击它,选择“羽化”,如图所示。第四步:然后设置羽化半径并保存(这里半径就代表了渐隐边缘的大小,设置越大),如图所示。第五步:设置完成后就能发现

本章节为你们带来的文章是关于AdobePremierepro2020软件的,你们晓得AdobePremierepro2020怎么进行字体替换吗?接下来,小编就为各位带来了AdobePremierepro2020进行字体替换的方法,感兴趣的用户快来下文看看吧。首先打离矿开AdobePremierePro2020软件然后点击菜单栏中的图塑信仗形,如图示:之后在弹出的菜单中点击替换项目中的字体,如图所示:最后等待收集字体完成即可悦墨替换


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Notepad++7.3.1
Easy-to-use and free code editor

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

Atom editor mac version download
The most popular open source editor

SublimeText3 Linux new version
SublimeText3 Linux latest version
