文章标签 ‘flex’
近期的一个FB工程里面需要用到比较复杂的Flash CS3资源(就是MC套子MC,子MC又有很多帧,帧上又有很多MC的那种…)。而且在这些MC中,某些帧上是有代码的。
遇到两个问题:
Flash资源帧上的代码没有执行。
gotoAndStop之后无法马上得到目标帧上的元件。
原因与解决:
对于FB导入Flash资源,我一直使用的是[Embed (source="???.swf", symbol="???")]方法。其实这种方法适合导入静态资源(即不包含AS代码的资源),而不适合导入动态资源(包含AS代码)。后来通过使用SWC导入的方法解决了。
帧上的内容不经过渲染是得不到里面的内容的(比如MC),这是Flash Player长久以来的一个问题。一般gotoAndStop之后,经过一次渲染(也就是下一帧的时候)内容才可访问。但经过我的测试,好像也有隔一帧仍然无法访问的情况,还要再隔一帧(共两帧)才行。(另,据说FB4已经解决了此问题。)
参考文章:
关于导入Flash动态和静态资源到Flex
http://sujitreddyg.wordpress.com/2008/01/02/creating-and-importing-flash-assets-into-flex/
http://blogs.adobe.com/flexdoc/pdf/swf9.pdf
http://www.bit-101.com/blog/?p=853
关于Flash Player运行与渲染原理
http://www.craftymind.com/2008/04/18/updated-elastic-racetrack-for-flash-9-and-avm2/
在做flash应用时,我们有时需要在flash中嵌入一段文字,内容来自一个文本文件,让flash每次打开时动态读到文本文件内容,就不用每次修改flash了。
这时我们就可以利用[Embed]元数据标签来把文本文件嵌入到flash中,当然它还可以用来嵌入不同类型的媒体和图片。
[Embed]元数据标签带有两个属性:
Source: (必选的)使用这个属性来确认嵌入资源的名称和路径。如果你嵌入了一个元件,你可以用元件的关键词确定元件认嵌入到SWF中的名字。
mimeType: (可选的)使用这个属性来确定嵌入资源的MIME类型。如果这个属性没有设置,Flash会在源属性中根据导入资源文件的扩展名载入合适的类型。
flash和flex支持的mimeType有以下几种:
* application/octet-stream
* application/x-font
* application/x-font-truetype
* application/x-shockwave-flash
* audio/mpeg
* image/gif
* image/jpeg
* image/png
* image/svg
* image/svg-xml
这里是一个小Demo:
源码查看及下载请猛击这里。
在我看来确实是Flash Builder更为合适,因为我用Flex Builder开发的全都是ActionScript工程。
程序员对名字都很敏感,嘿嘿。
推荐一个视频教程,演示了如何使用Flash CS4来制作一个包含字体类的SWF文件,此文件可以在程序运行的任何时刻动态加载。下面是地址:
http://www.gotoandlearn.com/play?id=102
最近开始用Flex Builder,开发人员嘛,还是用这个舒服。Flex框架的功能很强大,做RIA应用没的说,但对于开发游戏用处却不是很大,而且生成的swf文件会多出200KB左右。所以,我决定只建立ActionScript工程。然后问题就来了…
Flash中有一个类叫fl.transitions.Tween,用来做一些缩放或淡入淡出的特效很方便。但是此类在Flex中无法直接使用。 Google后看到有人说在Flex中可以用mx.effects.Tween这个类来代替,但是这个类也只能在Flex的工程中使用。难不成flash 中那么多方便的类都无法使用了么?难不成要自己写特效么?再找!
最终awflasher的一篇文章让我又看到了希望。文章里的例子是如何在Flex的ActionScript工程中使用Flash CS3的控件。经过一番小试验,终于让我找到了解决办法:
1. 用Flash CS3创建一个新的fla文件,起名叫flTween吧。
2. 在第一帧里面写上如下代码:
import fl.transitions.Tween;
var tween:Tween;
3. 文件->导出->导出影片->保存->选择导出SWC->确定,这样就生成了一个flTween.swc。
4. 在Flex Builder 3中,右键单击你的工程根目录,选择Properties->ActionScript Build Path->Library path->Add SWC->选择刚才生成的flTween.swc文件。
5. 接下来你就可以在代码里面import fl.transitions.Tween;了。
