add sprite to mxml 将as动画加入到mxml中

又开始折腾了,这回应该是正确的道路。2月26号的时候,先打印了五本书,分别是:

A. Foundation ActionScript 3.0 Animation - Making Things Move!

B. Advanced ActionScript 3.0 Animation

C. Advanced Flex 3

D. Flex 3 in Action

E. Creating Flash Widgets with Flash CS4 and ActionScript 3.0

眼睛在电脑前看太久了,这三个月来散光持续增加中,自己以为啊,哈,其实验光的效果,我近视眼已经下降到175度加50散光了,所以好的书籍我都决定打印出来看,夜深人静灯火阑珊的时候,坐下来读书,真的是一件很幸福的事情。

至今已经16天了,第一个星期看书还是很静心的,如饥似渴的学习着ActionScript 3的知识,实在是因为自己对于这么技术向往太久却没有用心思去琢磨,然后两本Animation的书也实属神作,看得自己都血脉喷张了。Keith Peters确实了不起,就好像一个极好的登山伙伴,你不用去想节奏不要去想呼吸,只要听着他说话,一步一步往山顶去,等你突然回头,你会发现群山就在你的脚下了;很多复杂的动画,跟随他从最基本的一步一步走来,都不经意就完成了。C与D,是因为我需要学习Flex。至于E,完全是因为我想了解Flash CS4到底增加了哪些功能,于是打印的,看见了3D和bone,确实很好很了不起,尤其是在看A的时候,自己曾跟着一步步把bone用数学和物理知识加代码自己算出来,再看见这样的组件,真是有恍然大悟之感。

但是,确实自己属于老古董级别的AS菜鸟,我只是在8年前用Flash 5做过一个纯Flash网站,那是一个从数据库取几个数都是很神奇,需要自己摸索一个星期的年代。但其时做一个flash作品太依赖美工了,用代码做项目只能是一种奢望,于是项目结束就再也没有研究过了。AS我熟悉,OO后的AS,依照Java经验,只是更熟了,哈,时间线我也熟,但进入了mxml时代,我就歇菜了。

从A中明白了取代timeline的flash.display.Sprite,曾经的Frame loops和Clip events被更优雅的Listeners and handlers处理机制取代,addEventListener(Event.ENTER_FRAME,onEnterFrame)就能让画面动起来,真是激动啊。

不过基于Sprite 的AS Class,要么得设置为一个fla文件的document class来运行,要么得在Flex Builder中建立一个AS project来跑,那显然是最初级的办法。OO么,自然是import进来再new一个,就能用了,但我怎么都不能在一个Flex Project中把某个动画用mx:state来显示。可真是发愁。

Goole之,用了n多关键词,都不行,哈哈,当我mxml sprites之,终于在mayur07年2月的博客中找到了Sprites in MXML:Sprite is nothing but a new object introduce which is similar to movieClip. We can draw inside it and place it on to the stage by using its graphic object.

The reason for error is mainly because sprite is the superclass of UIComponent,where as to add any object in mxml base container we need it to be a type of UIComponent. As the UIComponent class is the base class for all visual components. addChild method in UIcompoent Overrides the addChild method DisplayObjectContainer’saddChild method and adds a new object to mxml base container. (DisplayObjectContainer’ is a super class of sprite class ) Hence when we do addChild(newObject) we get a error,if newObject is of type sprite,as addChild which is invoked is of UIComponent class's method.

Hence we need to add a sprite to UIcompoent first and then the UIcomponent to mxml base container as follows :


或者可以把该Sprite放到一个Canvas当中,修改一下代码如下:


非常顺利的完成了困惑自己三天的问题。

    还准备看Essential ActionScript 3和ActionScript 3 DesignPatterns的,据说关于Design Patterns的书,有Gof的<Design Patterns>和Dr. YanHong的《Java与模式》两本就足矣,但William B. Sanders & Chandima Cumaranatunge这本书也很是精彩,而要深入理解ActionScript,Essential ActionScript 3则必不可少,我准备再打印2k页的书去。

相关文章

一:display:flex布局display:flex是一种布局方式。它即可以...
1. flex设置元素垂直居中对齐在之前的一篇文章中记载过如何...
移动端开发知识点pc端软件和移动端apppc端软件是什么,有哪些...
最近挺忙的,准备考试,还有其他的事,没时间研究东西,快周...
display:flex;把容器设置为弹性盒模型(设置为弹性盒模型之后...
我在网页上运行了一个Flex应用程序,我想使用Command←组合键...