文章标签 ‘AS3’
2010八月4

signals

更换了主题之后连一篇文章都没有发过. 不知道是自己早已忘却了以前的感觉,还是不给自己时间.

这是一个伪技术帖.

做过flash开发的同学自然避免不了和Event打交到. 从简单的click到复杂的数据交互,甚至一些框架化结构化都离不开他. 虽说AS3里面提供的事件模型已经好很多了,但有时候仍然嫌他不够好用. 尤其是集中在只能针对字符串类型的事件. 不知道大家有没有遇到过事件名冲突的问题. 虽然这都算不上一个技术问题,但调试起来确实很费劲.

至少在使用signals的时候就不会出现这样的问题. 当然这个并不是为了解决这个问题.  signals让事件不再基于字符串而是基于具体的Class.

这是一个轻量级的事件框架也是Robert Penner提供一种新颖的思想. 用起来感觉也不错,提供不少实用的api. 如removeAll()这样的方法. 但是我还是觉得得看情况选择. 虽然没有看源码但可以预见里面基本上应该是个观察者列表.  那么操作的时候会不会有效率问题?  就好像Hack同学说的, 如果框架里面有很多来自Event, 又全部都是static type, 甚至连冒泡都不被需要的时候,那么这个就非常必要了.

2010六月2

关于类型强转换

 这是一个非常基础的问题. 在平时工作中就算是再小的项目里面也会涉及到类型转换. 方法大致也就是类似

  ClassName( instance );  instance as ClassName;

就类型转换而言没什么区别,在我看来也就是报错或是返回null的区别而已.

有的时候用得习惯了,动不动就会吧Int(),Object()这样的玩意拿来转. 别的还好, Array的时候请一定要注意. 这些个东西其实是全局函数,文档上写得很清楚的.

就如同事发我的代码

var a:Object;

a = [1,2];

Array(a).length;

(a as Array).length;

结果显然是输出1,2. 原因就是Array(a); 这个不是说类型转换, 是新建了一个Array. 所以

Array(a)[0].length 这个时候就是2.

各中道理文档上很详细的说. 别出现这种bug, 会让人很郁闷的.

2009八月9

pv3d的滤镜

说实话,这是个麻烦的事情,我说的是学习这个加滤镜的方法.

当你实例化一个DisplayObject3D的时候,你会发现它本是有filters这个属性的,但是无论你怎么添加都没有效果. 我老是以为是自己前面有什么属性没有设置的缘故. 无奈,开源码一看, 他压根就不是继承DisplayObject的. 他直接是EventDispatch的子孙.

另外,filtersDisplayObject的一个属性,可是在类里整个就声明了一次,去子类找,也没有找到相关针对此属性的操作.不知道留这么个属性是干什么的,难道是为了以后扩展?有知道的同学请告知,谢谢.

至于如何添加很简单,就是添加一个层,.对这个层应用filters就好了. 用viewportgetChildlayer这个方法就可以,其实相当于是新建了一个layer. 获取之后3dObj就能用自己的container这个属性来获得层了(那回收的时候怎么回收? 先要在3dObj里面把这个干掉吗),不是很明白. 

最近到处忙,希望能找到一个空子再来研究一下.

2009七月4

发现文章有丢失

 找前段时间做的粒子,突然发现那篇博文不见了. 看来搬家的时候多多少少还是遗失了一些.大概也就这样把把链接丢出来,以后方便自己看..

链接1

链接2

2009六月30

Socket

长期被js折磨之后,终于终于是又有个Flash的玩意做了. 记得原来还发过一篇博文关于 js长连接的东西. 当时的目的是为了制作一个在线聊天的功能. 最终还是感觉不能忍. 遂改成flash的.

因为以前就玩过,感觉没有什么困难.因为as实现的功能仅仅就是连接,发送,接受而已,显示还是通过html来完成.我觉得这样还是比较好的做法. 让flash来弄一堆文本还是很郁闷的事情,中间又涉及到滚动条,切换,还又大小的变化.总之我觉得用html来处理文本要比flash要好得多. 中间用js来通讯.

实际去写的时候第一步就卡住了, 直接会报SecurityErrorEvent.明明已经有跨域文件了,那么ok,loadPolicyFile. 结果依旧是SecuriryError. 这就让人很郁闷了. 最后用了一个最原始的方法— 让服务端将配置文件原样发过来就可以了.记得在最后加"\0".这样flash才会认为完毕.

终了之后想着,webgame,凡是html版的都可以这么干,功能不仅仅限于聊天. 有很多任务都不必通过ajax,推送是有很大好处的.看起来系统更加智能.也方便很多. 当然现在我么小组是不能回退了. 只有期望下个游戏了.

2008十月21

AS3 Binding

由于很长时间被派去做页面了,成天和js死磕,感觉手痒( AS1的语法果然威力很大.. =.= ) , 有的时候写js总是感觉庆幸自己在某个时间还写过AS1,哎…今天实在是不想弄页面,于是就写了这么个东西.

第一个版本写的很快,基本就是把观察者模式完整实现了一次(BindingToMe) , 感觉不爽, 又实现第二次(BindingTest2) , 突然觉得还是绑定一个对象或是class的时候比较多于是就又写了第三次(BindingTest3),直接就把Proxy带进去了 , 都写的很快,感觉纯粹是在打发等美工那个图的无聊时间,但是最后依旧没有没有达到满意的结果…哪位有好实现的帮忙提点一下…感谢感谢..

源码点这里.

2008八月1

有命名空间的xml

首先这个很郁闷,是第一遇到,开始没有看清楚xml的结构形式, 导致工作的时间拉锯很长很长……..=.=!

迅速贴个代码…

private function getElement( child:XML, ns:String,type:String ):XMLList
 {
            return child.descendants( new QName( ns, type ) );
  }

然后传个文件  :  下载

迅速逃离现场,以免被背后的经理发现……

2008六月1

lp遇到载入swf取不到里面定义值

其实我觉得这就是一个很莫名的问题,我不知道为什么访问不到,于是做了一个测试…

点击这里下载

代码本身很短,粗略的测试一下确实是可以访问到的.

trace(Main(loader.content).myStr); 这样完全没有问题…

但是,如果你在被载入的swf的舞台上放一个对象,比如一个mc,并且给这个MC起一个名字aaa,那么就会报"无法为**创建aaa的属性"这样的错误. 于是删除,关联一个类, 实例化的时候报错,说是未定义. 这时才隐约记得了以前好像也有类似的问题. 之后感觉很白痴之后就用dll了,我感觉那样写在管理上不方便..

算了扯远了,其实错误的原因就是不能转化成那个被载入swf的文档类,即 loader.content as Main 或 Main(loader.content)…解决方法很简单,直接强转成MovieClip就好了,但是请注意文档类是继承MovieClip的,不是sp,看到这里大概都能明白了,为什么一个可以一个不可以呢?? 那可以想一下mc 和 sp 有什么不同呢.. 呵呵…

点击这里下载     这个是之后的版本.

2008三月17

scaleY

也许大家都发现很久很久了, 我是才发现, 在做 "垂直翻转" 的时候 其实只需要把这个属性 即  myBitmap.scaleY = -1; 它就这样了….呼呼

2008二月20

setTextFormat

今天群里有朋友问在stage里直接画的动态文本能不能调用这个setTextFormat这个方法,大家都表示是可以调用的,可是我拿到他的文件的时候运行,确实看不到效果,这个令人很郁闷….结果就试试改变以下别的样式,结果是可行的,再仔细看他设置的样式是underline,是下划线,陡然明白是不是他文本不够高,因为是自己画上去的,不是用AS实例化的,所以估计是和标准的有差异,一试验果然如此,哎,忙乎半天啊. 特此记录一下,改明儿我要是遇到这样的问题也好能有个印象.