摘要:
还记得之前的学习笔记中我们的顶点缓冲数组中的顶点数据么,我们使用一个一维数组来记录所有的顶点数据,这是由于顶点缓冲上传数据时是使用的一维数组。如果对顶点数据进行一层代码的封装,就能更加的方便我们来操作顶点数据了。所以引入了VertexData(顶点数据)这个类来进行封装。在Starling中一个顶点... 阅读全文
随笔分类 - ActionScript3.0
【Stage3D学习笔记续】山寨Starling(一):从事件说起
2014-11-06 15:49 by 阿诚de窝, 534 阅读, 收藏,
摘要:
我在GitHub上新开了一个项目:https://github.com/hammerc/hammerc-study-Stage3D山寨的Starling版本我取名叫做Scorpio2D,以后的笔记中只会贴出核心的代码,完整的代码和示例大家可以去GitHub中查看。同时为了避免Starling中和原生... 阅读全文
Stage3D学习笔记(六):旋转动画效果
2014-11-05 15:22 by 阿诚de窝, 608 阅读, 收藏,
摘要:
我们这节在上一篇代码的基础上再进一步,让显示的纹理进行旋转。实现旋转,只需要每帧修改_modelViewMatrix的旋转角度即可,我们需要一个变量来记录旋转:1 //旋转度数2 private var _rotation:Number = 0;每帧修改后的数据需要重新提交到GPU,而已经提交的数据... 阅读全文
Stage3D学习笔记(五):通过矩阵操作纹理
2014-11-05 12:58 by 阿诚de窝, 667 阅读, 收藏,
摘要:
虽然我们上一节已经实现了正交矩阵的显示,但是可以明显的感觉到要调整显示纹理的坐标和尺寸是相当复杂的,需要对每个顶点进行操作,如果还要加上注册点和旋转的话,用上一节的方法来做是会让人发疯的!所以我们距离实用还有很长的路要走,加上之前面试时由于对Starling内部实现的不了解导致的失利,所以接下来的一... 阅读全文
Stage3D学习笔记(四):正交矩阵
2014-11-03 16:01 by 阿诚de窝, 777 阅读, 收藏,
摘要:
我们上一章节显示图片的时候,会发现我们制定的顶点在Stage3D中其实是存在一个区间的:x轴(从左到右):[-1.0-1.0]y轴(从下到上):[-1.0-1.0]z轴(从近到远):[0-1.0]超过这个区间的部分我们的图片都会看不见,大家可以重新修改上一节的代码中的顶点位置查看;并且该区间不会跟随... 阅读全文
Stage3D学习笔记(三):使用GPU绘制一个图片
2014-10-31 17:25 by 阿诚de窝, 1335 阅读, 收藏,
摘要:
首先准备我们需要的图片,尺寸必须是2的幂数,我修改了一下Starling的图标拿来用:还是先看看最终效果:代码是居于上一节的代码进行修改的: 1 package 2 { 3 import com.adobe.utils.AGALMiniAssembler; 4 5 ... 阅读全文
Stage3D学习笔记(二):使用GPU绘制一个三角形
2014-10-31 14:35 by 阿诚de窝, 652 阅读, 收藏,
摘要:
我们需要使用到Adobe自家提供的AGALMiniAssembler代码类,可以在网下进行下载;关于AGAL的入门知识可以参考下面的文章:AGAL介绍系列文章(第一部分)AGAL介绍系列文章(第二部分)AGAL介绍系列文章(第三部分)最终效果如下:直接上代码了,亲们请查看相关的注释说明: 1 pa... 阅读全文
Stage3D学习笔记(一):3D术语简介
2014-10-13 15:40 by 阿诚de窝, 556 阅读, 收藏,
摘要:
网格(Mesh)3D中,所有可见的模型都被称作网格。网格是由3DMax等建模软件制作,定义了一个3D物体的形状。一个网格是由多个多边形组成的。多边形(Polygon)一个多边形是组成网格的一个最小单位,大多数情况下是一个三角形,3D世界中的所有形状都是由多个多边形组成的。一个多边形是由多个顶点组成的... 阅读全文
页游里的文件版本号说明
2014-09-09 20:07 by 阿诚de窝, 427 阅读, 收藏,
摘要:
页游里更新版本需要解决的一个问题就是浏览器缓存,一方面我们需要缓存来提高打开速度,一方面如果文件已经更新则需要通知浏览器不要使用之前的缓存,所以需要添加版本号;现在比较流行的版本号一般是诸如“http://lztxcdn.jieyou.com/q140319/Main.swf?ver=57288de... 阅读全文
避免SWF被内存提取工具提取的方法
2014-08-28 18:58 by 阿诚de窝, 1807 阅读, 收藏,
摘要:
内存工具从内存中抓取SWF一般是依靠寻找SWF的前7个字节(3个SWF文件必有的标示字节“FWS”或“CWS”或“ZWS”+4个记录该SWF文件长度的字节),所以避免被提取我们只要在加载SWF到内存后,修改这头7个字节即可(SWF加载后修改这几个字节不影响SWF的运行)。那么SWF在内存中的字节在哪... 阅读全文
IntelliJ IDEA 使用教程 - AS3篇
2014-02-17 17:26 by 阿诚de窝, 3817 阅读, 收藏,
摘要:
喜欢IntelliJ IDEA的黑色皮肤,所以研究了下这个IDE的使用:安装ActionScript Profiler插件:IDEA默认不带分析功能,需要下载安装该插件才行;File->Setting...->IDE Settings->Plugins->点击Browse repositories...按钮,打开的界面列表中选择ActionScript Profiler,点击右键选择Download and Install即可,会重启IDEA;配置外部纯代码类库:右键选择Open Module Settings...打开对话框后,选择libraries,点击加号添加,选 阅读全文
Starling的handleLostContext属性说明
2013-04-23 16:35 by 阿诚de窝, 1043 阅读, 收藏,
摘要:
AS3的Stage3D存在设备丢失的问题;会带来的问题就是,已经上传到显存的所有数据丢失,当遇到该问题后唯一的解决方法就是在设备丢失后重新上传一次数据;Starling提供了一个静态属性handleLostContext,设置为true则会自动处理设备丢失的问题;那么Starling会如何进行处理呢?我们可以看看Texture类,其提供的4个静态方法用来创建Texture,分别为fromBitmap、fromBitmapData、fromAtfData和fromColor,其中可以找到的逻辑就是,如果handleLostContext为true,则ConcreteTexture对象会记录对应的 阅读全文
AS3原生JSON输出字符串描述时的格式化
2013-04-22 14:12 by 阿诚de窝, 1269 阅读, 收藏,
摘要:
记录一下,一般使用JSON序列化一个对象成字符串描述时都比较难于阅读,特别是大量且复杂的数据时,如:1 var s:String = '{"title":"Adobe Flash 11 Stage3D (Molehill)Game Programming","authors":["Christer Kaitila"],"edition":1,"year":2011}';2 var o:Object = JSON.parse(s);3 trace(JSON.st 阅读全文
详解as3中flashplayer11.5新推出的多线程同步技术[总结]
2013-04-15 11:49 by 阿诚de窝, 682 阅读, 收藏,
摘要:
本来打算写一个多线程的图片批量处理的实例展示一下,后来觉得也没什么人需要这个多线程就算了,总之我了解的都说到了,所以这里打算总结一下就结束掉我们的教程:Worker运行在flashplayer11.4或air3.4以上,同步是flashplayer11.5和air3.5才引入的;Worker的主要目的是为了在高强度的运算下任然能保持较高运行帧率,但是Worker需要使用额外系统内存和CPU,开销很大,所以尽量少用Worker,最多同时运行时不应超过2个后台Worker(即子线程);移动平台的AIR不支持Worker!ByteArray的两个方法教程中没有说到:atomicCompareAndS 阅读全文
详解as3中flashplayer11.5新推出的多线程同步技术[第三步:Condition是啥]
2013-04-15 11:48 by 阿诚de窝, 637 阅读, 收藏,
摘要:
我们知道AS3中实现同步使用的是Mutex类,那么Condition可以看做扩展了Mutex类功能的类,首先我们看看Condition的构造方法:public function Condition(mutex:Mutex)说明Condition类是基于一个Mutex对象的,且其mutex属性为只读,说明其扩展了某一个Mutex对象就不能更改为其它的Mutex对象;再看看Condition提供的方法:public function notify():voidpublic function notifyAll():voidpublic function wait(timeout:Number = 阅读全文
详解as3中flashplayer11.5新推出的多线程同步技术[第二步:认识死锁]
2013-04-15 11:45 by 阿诚de窝, 821 阅读, 收藏,
摘要:
之前我们了解了在AS3中线程之间的同步该如何实现,那么现在我们来看看同步可能会导致的问题。同步技术保证了多个线程对同一个对象进行操作时的安全性之外,带来了一个新的问题,那就是死锁的问题。什么是死锁?百度一下,我们得到一个大致的介绍:所谓死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象:死锁。那么AS3中该怎么样来模 阅读全文
详解as3中flashplayer11.5新推出的多线程同步技术[第一步:实现同步]
2013-03-31 22:14 by 阿诚de窝, 1373 阅读, 收藏,
摘要:
在学习同步之前,我们先用多线程实现一个简单的功能,看看并发会出现什么问题?我们创建一个共享的字节数组对象和一个子线程Worker,同时向这个字节数组对象写入数据,主线程写入1到10这10个int数据,子线程写入11到20这10个int数据;然后我们将这个字节数组的所有内容打印出来。这里存在一个问题,由于我们无法准确的控制子线程开始运行的时间,所以要做到两个线程同时向这个字节数组对象写入数据是件很困难的事,如果不做处理,我们根本看不出任何并发导致的问题;因为写入10个int数据对处理器来说太简单了,一瞬间即可完成;所以我们更可能看见打印出的内容是1到20(主线程先运行),或者看到11到20之后跟 阅读全文
详解as3中flashplayer11.5新推出的多线程同步技术[准备篇]
2013-03-31 19:21 by 阿诚de窝, 1462 阅读, 收藏,
摘要:
最近心血来潮想仔细的学习一下AS3中的多线程,其实早在11.4时就已经学过AS3的多线程怎么用了,当时主要还是靠网上的搜罗;之前了解过11.5中会升级多线程,加入了ByteArray共享的功能,心想现在11.7都快出了,应该有11.5的多线程的资料了吧,结果我只找到了一点零星的资料:http://not-so-stupid.com/as3-concurrency-workers-shared-bytearray-mutex/http://www.bytearray.org/?p=4423(翻译:http://www.erlangsir.com/2012/09/03/actionscript-w 阅读全文
Flash 库原件连接的一点心得
2012-09-07 17:35 by 阿诚de窝, 282 阅读, 收藏,
摘要:
Flash IDE 中连接一个库对象为 AS 导出时,其类或基类可以指定为一个没有任何功能的简单类对象,如:package xxx.xxx.xxx{ import flash.display.MovieClip; public class MyMovieClip extends MovieClip { public function MyMovieClip() { super(); } }}我们的 Flex 工程中有写好的真正的 MyMovieClip 类,该类中有我们需要的所有新方法,那么根据 ApplictionDomain 的特性,新载入的 swf 中如果有同包同名的类被载入... 阅读全文
浙公网安备 33010602011771号