Tag Archive: tip


在Flash自带的ComboBox组件中,下拉列表部分是被加到主场景(Stage)上的。这就带来一些问题:比如ComboBox放在一个运动着的可视对象上,点开下拉列表后,这部分并不会跟随着父物体运动。如果父物体是三维层,下拉列表也不会继承上层的属性,这就会造成视觉上的问题。

下面的代码演示了一个不修改ComboBox源代码的前提下解决这个问题的小技巧。思路很简单:监听下拉列表的打开和关闭事件,动态改变dropdown对象的parent。

// cb is a ComboBox instance
 
cb.addEventListener(Event.OPEN, openHandler, false, 0, true);
cb.addEventListener(Event.CLOSE, closeHandler, false, 0, true);
 
private function openHandler(event : Event) : void
{
	// wait one frame
	addEventListener(Event.ENTER_FRAME, tick, false, 0, true);
}
 
private function closeHandler(event : Event) : void
{
	// hide dropdown
	cb.dropdown.visible = false;
 
	// add dropdown back to stage
	stage.addChild(cb.dropdown);
}
 
private function tick(event : Event) : void
{
	removeEventListener(Event.ENTER_FRAME, tick);
 
	// add dropdown to another parent
	someContainer.addChild(cb.dropdown);
	// reposition dropdown if needed
	cb.dropdown.move(cb.x, cb.y + cb.height);
	// show dropdown
	cb.dropdown.visible = true;
}

https://gist.github.com/721420

FDT 4.0 Profiler Issue

FDT4.0测试版新增的Profiler是我最喜欢的功能之一,通过这一功能可以很方便的排查内存泄漏等问题。最近升级了M4版本后,调试时不能自动弹出播放器窗口的问题解决了。但是Profiler功能却总是没法连接到播放器。经过一番研究,终于发现问题出在Profiler调用的一个ProfilerAgent.swf文件的安全性限制上。在升级的时候,原先的信任路径没有被更新,造成ProfilerAgent没有权限执行。为了避免日后升级出现同样的问题,一劳永逸的方法是直接把eclipse的安装路径添加到信任策略文件上。

附上系统中信任策略文件的地址,关于Flash Player安全性方面的知识可以参看白皮书

Windows

  • For single-user (replace <user> with actual username):
    C:\Users\<user>\AppData\Roaming\Macromedia\Flash Player\#Security\FlashPlayerTrust\
  • For all users on the machine:
    C:\Windows\System32\Macromed\Flash\FlashPlayerTrust\

Mac

  • For single-user (replace <user> with actual username):
    /Users/<user>/Library/Preferences/Macromedia/Flash Player/#Security/FlashPlayerTrust
  • For all users on the machine:
    /Library/Application Support/Macromedia/FlashPlayerTrust

Happy FDTing!

ps. FDT M4改进了编译器,大大加快了编译速度,建议升级。

方法:

第一步,打开FDT安装目录下的eclipse.ini,新增两行:

-Dfile.encoding=utf-8
-Dsun.jnu.encoding=utf-8

第二步,转到你的flex sdk下的bin目录,用文本编辑器打开jvm.config文件。找到“java.args=”开头的那一行,同样添加两个参数,修改好的结果如下:

java.args=-Xmx384m -Dsun.io.useCanonCaches=false -Dfile.encoding=utf-8 -Dsun.jnu.encoding=utf-8

大功告成!

原理:

Eclipse默认编码为操作系统内核的编码,中文Windows下就是GBK。在调试的时候控制台接收Flash Player传递过来的信息又是以utf-8编码发送的,所以形成了我们看到的乱码。通过以上设置把Eclipse和Flex SDK的Java虚拟机参数指定为utf-8编码,这样大家都统一用相同的编码来传送信息,就不会再有乱码出现了。

update:

升级到M4版本后,乱码问题好像解决了。请用这个版本的朋友不要再用我的这个方法了。

Powered by KevinCao.com ©2010 | Platform: WordPress | Theme: Motion
kevincao.com