FlashInspector 0.1.5更新

FlashInspector 0.1.5发布

如果你正在使用FlashInspector,建议更新到该版本。特别是Firefox 3.6.6后的版本。

主要更新:

添加了“全局处理错误“,Flash Player的报错会在Flash里面弹出”错误信息面板“。注意这个功能是针对Flash Player 10.1的,默认是开启的。
错误信息面板除了显示错误的信息,还显示了错误发生的时间,包括UTC时间、从swf运行时长(getTimer())。
”错误信息面板“会在下一个版本加强。可以记录错误的历史。

FlashInspector 0.1.5在Firefox另外一个比较重要的更新是JS部分的,增加了DOMContentLoadedMozAfterPaint事件的处理。

Firefox Flash Player插件经常崩溃?

如果Firefox安装的是debug Flash Player,那么最近(从Firefox 3.6.6开始)可能会发现,一旦Flash Player一旦弹出错误警告Firefox就开始没响应过一段时间Firefox网页内开始显示Flash Player已经崩溃。这个可能是Firefox处理插件方式导致的(当然,有时它是真的崩溃了)。

Debug Flash Player虽然可能只是弹出一个错误的警告,但是Firefox却认为Flash Player插件出问题了,然后完全禁用Flash Player插件。

解决方法是:在Firefoxabout:config里把dom.ipc.plugins.enabled.npswf32.dll设置为false

参考文章:http://nwebb.co.uk/blog/?p=538

组件安装后没有显示在Flash面板中

情形是这样的:在中文的系统上安装英文版的Flash CS5,那么用Adobe Extension Manager安装mxp后,Flash CS5中的组件面板没有显示出刚装的组件。
问题在于Adobe Extension Manager会把组件安装在系统语言(中文)的路径下,像这样:

".../Flash CS5/zh_CN/Configuration/Components/..."

Flash CS5读取的组件时安装自身语言版本的,像这样:

".../Flash CS5/en_CN/Configuration/Components/..."

解决方法是,让Extension Manager把组件安装在Flash CS5语言的路径下,方法有两个:

  • 启动Extension Manager时指定语言,再安装组件:给Extension Manager的快捷方式中添加一个启动参数:
    -locale lang="en_US"
  • Flash CS5中启动Extension Manager,方法是Flash CS5菜单栏:Help – Manager Extension…,然后再安装组件。

相关文章:

窗口拖动特效

这几天正在制作的窗口特效组件,关于Genie特效的as3实现可以参考这个例子。实现方法是:tween + drawTriangles + 点。

[kml_flashembed publishmethod="static" fversion="10.0.0" movie="http://www.itamt.com/wp-content/uploads/2010/08/GenieEffectorDemo.swf" width="550" height="400" targetclass="flashmovie"]
Get Adobe Flash player
[/kml_flashembed]

想来特效就是关于点的运动,针对点的计算。一个点从原始位置运动到目标位置,过程是怎么样的。把窗口从一个位置拖动另一个位置,就可以抽象成一个矩形从一个位置移动到另一个位置,再把一个矩形分解成四个点,还是点的运动。从原点到目标点的计算就是tweentween的核心各式各样的ease,这些公式才是最难的地方。开源的tween非常丰富,已经可以不必去碰那些头大的数学公式就做出看上去很酷的效果。数学是研究3D、物理引擎、粒子特效最该学习的了。

关于Flash IDE组件的一个问题(1)

Flash IDE里,在舞台上添加一个动态文本。然后从组件面板上拖出UIScrollBar组件,放到动态文本上,会发现动态文本被设置了实例名,查看UIScrollBar组件的属性,发现它的scrollTargetName被设置成了动态文本的实例名称。

也就是说:把一个组件放置到一个元件上,这个组件能够获得到这个元件的名称。如果这个元件没有名称,还会先给这个元件设置个名称。

如果你在制作组件时,也需要实现这样的功能,那么你可以这么做:给组件定义一个叫_targetInstanceName的参数。像这样:

[Inspectable()]
public function set _targetInstanceName(val:String):void{
//...
}
public function get _targetInstanceName( ):String{
//...
}

注意我们标识了Inspectable标签,表明这个属性是组件参数。
接着更新下组件:在库面板,右键单击组件,组件定义⋯⋯,确定。这样之后,用组件检查器(窗口-组件检查器)查看你的组件,应该会看到一个_targetInstanceName的字段。现在你再试着把组件拖动到一个元件上,你就会发现元件被设置了名称,而且组件的_targetInstanceName也被赋值了。

原来给组件定义一个_targetInstanceName参数就可以实现我们要的功能。

之前一直以为这样的功能,可能就是给组件添加设置下属性,比如在组件的catalog.xml中设置某个参数autoSetDropTargetName=true,但真的制作组件时才发现这个功能没有想象的简单,官方似乎也把它当成隐藏的东东,帮助文档中更没有说明。我是通过比较UIScrollBar(as2)的源文件和FlashEff的组件代码,发现了设置_targetInstanceName可以实现这个功能,可能还有其他的方法:因为观察as3版的UIScrollBar它组件参数里面并没有_targetInstanceName的字段,而是scrollTargetName,这个嘛⋯⋯

虽然通过添加_targetInstanceName组件参数完全让预想实现了,但是,当打开组件检查器,总是看到整齐的参数列表开头是一个以下划线开头的字段,有点⋯⋯太丑了吧。那么你可以在它的Inspectable内加入name的属性,比如:

[Inspectable(name="target")]

这样在组件检查器中出现的参数名称是target而不是_targetInstanceName了。

如果你真的很追求完美,那么你可以自己制作组件检查器里面的界面!在库面板中右键单击一个元件-组件定义⋯⋯在弹出的面板中“自定义界面”说的就是这个啦!“自定义界面”其实就是个swf,通过这个“自定义界面”和“实时预览”配合,组件参数设置的用户体验可以做到非常的棒!再也不是对着面板里一堆不像话的参数,不断修改调整、不断的ctrl + Enter,试想一下你在面板里面用鼠标旋转一个圆就可以调整组件的角度,而且可以实时在Flash IDE里看到!这真是太酷了。

关于制作“自定义界面”的组件可以参考这篇文章,写的简单明了:http://studio.barliesque.com/blog/2008/12/as3-component-custom-ui/

推荐相关文章:

FlashInspector 0.1.4更新

FlashInspector更新至0.1.4版本。
主要添加以下功能:

  • swf信息面板,显示swf的一些属性,比如:url、swf版本、尺寸、舞台颜色(bgcolor)、对齐(align)、缩放模式(scaleMode)。你也可以修改一些属性,想舞台颜色、尺寸,等等。注意如果你修改舞台颜色的话,会重新加载swf。
  • swf性能面板,显示swf当前运行的帧速、内存。
  • 添加了“全屏”按钮,实际上之前的版本已经添加了“全屏”按钮,但不一定对所有的swf(as3)有效。现在通过JS的处理,应该对“全屏”应该对所有的swf(as3)都有效了。
  • “重载swf”按钮,用于重新加载swf。

弟子规

[kml_flashembed publishmethod="static" fversion="9.0.0" movie="http://player.youku.com/player.php/sid/XMTU2NzE5MDgw/v.swf" width="480" height="400" targetclass="flashmovie"]
Get Adobe Flash player
[/kml_flashembed]