解决Flash UI 组件的FocusManager与Flex的冲突

四月 26th, 2012 by Lukialee

Flex和Flash组件一起使用时,一旦按下Tab键,会有这样的报错:

ArgumentError: Error #2025: 提供的 DisplayObject 必须是调用者的子级。
at flash.display::DisplayObjectContainer/getChildIndex()
at mx.core::Container/getChildIndex()
at mx.containers::Panel/getChildIndex()
at fl.managers::FocusManager/getChildIndex()
at fl.managers::FocusManager/sortByDepth()
at Array$/_sort()
at Array/http://adobe.com/AS3/2006/builtin::sort()
at fl.managers::FocusManager/sortFocusableObjects()
at fl.managers::FocusManager/keyDownHandler()
ArgumentError: Error #2025: 提供的 DisplayObject 必须是调用者的子级。
at flash.display::DisplayObjectContainer/getChildIndex()
at mx.core::Container/getChildIndex()
at mx.containers::Panel/getChildIndex()
at fl.managers::FocusManager/getChildIndex()
at fl.managers::FocusManager/sortByDepth()
at Array$/_sort()
at Array/http://adobe.com/AS3/2006/builtin::sort()
at fl.managers::FocusManager/sortFocusableObjects()
at fl.managers::FocusManager/getNextFocusManagerComponent()
at fl.managers::FocusManager/setFocusToNextObject()
at fl.managers::FocusManager/keyFocusChangeHandler()

这是因为Flash文件中使用了Flash提供的UI组件,这些组件里都包含了fl.managers.FocusManager这个类,它与Flex中的FocusManager有冲突。最简单的办法是,不加载那个Flash文件了,或者把那个文件中的UI组件去掉,但这又影响功能。

所以最根本的办法是在根源处抑制。

在Flash中使用到UI组件的地方,把UI组件中的focusManager禁用,比如:
var scrollBar:UIScrollBar = new UIScrollBar();
addChild(scrollBar);
var fm = scrollBar.focusManager;
fm.deactivate();

scrollBar是一个fl.controls.UIScrollBar。

code

Free Learn Chinese App For iPhone, iPod Touch, Mac, PC and Linux

四月 12th, 2012 by Lukialee

Learn Chinese For Free with your iOS device and Computer.

My friends have submit an iPhone/iTouch App to Apple App Store. The name is:

iChinese Beijing–Travelling Chinese about Beijing

Everyone could download the app for free. This app is amazing. I like the carachaters in the story.

Ext JS Tree没有滚动条?

十一月 16th, 2011 by Lukialee

很多WEB开发者都用Ext JS来做界面,它确实很方便。

但我不能忍受的是,在Tree组件中,没有滚动条,如果树中的内容太多,会看不到。

image

 

很简单,修改 ext-all.css 中的

.x-grid-view

将其改为:

.x-grid-view {
overflow-x: auto;
overflow-y: auto;
position: relative;
}

image

这样滚动条就出来了。

多米桌面音乐AIR版发布--适用于Mac和Linux

九月 17th, 2011 by Lukialee

这是在多米论坛 桌面音乐 发布的帖子

http://www.duomi.com/bbs/thread.shtml?aid=1

1.先安装Adobe AIR,你懂的
http://get.adobe.com/cn/air/

2.下载桌面音乐安装包
http://down.duomi.com/DuomiDesktopMusic.air

这个“桌面音乐”只有电台,可以听,功能还比较少。
但多米还有一个非常好玩的产品, 就是多米DJ,也可以用Mac直接玩哦。

http://duomi.fm/

测试多米Web播放器–DJ舞曲

八月 10th, 2011 by Lukialee

用Flash Catalyst CS 5.5 制作Flex4皮肤

七月 31st, 2011 by Lukialee

Flash Catalyst是专门为Flex 4制作皮肤的工具,当然产品经理也可以用它做界面原型和Demo,不用写任何代码,就可以实现各种交互功能,制作出丰富的动画。

在这里我不会讲述设计师如何在PS中做设计图,那是界面设计的范畴。仅仅讲述如何将PSD快速变成FLEX需要的皮肤,程序员就不必那么痛苦了,设计师也更有成就感!

完成设计图后,如果是PSD或者AI文件,可以直接导入到FC中。对于PSD,要事先把多余图层删除或者合并,将太复杂的图层效果合到位图中。

在FC中制作组件,有两种方式,可以把导入的图形元素转换成组件,

也可以从库里面拖进来按钮进行修改。

其实现在的FC还很不完善,就简简单单一个Button组件,就有很多问题。如果想要一个可以自由缩放的按钮,最好用矢量图。记住一定要有一个文本框被设为Label。

FlashCatalyst Button

在导入Flex 4项目后,还需要把这个ButtonSkin中被设死的宽度和高度删除,比如这个:

<s:Skin xmlns:fx=”http://ns.adobe.com/mxml/2009″ xmlns:s=”library://ns.adobe.com/flex/spark”
xmlns:fc=”http://ns.adobe.com/flashcatalyst/2009″ width=”70″ height=”24″ >

最好改成

<s:Skin xmlns:fx=”http://ns.adobe.com/mxml/2009″ xmlns:s=”library://ns.adobe.com/flex/spark”

xmlns:fc=”http://ns.adobe.com/flashcatalyst/2009″ minWidth=”81″ minHeight=”21″ >

至于最小高度值,你可以随便设置。

还有一个属性大家可能经常用:icon。而用FC做的按钮竟然用不了这个属性。可以把 <s:Skin 改成<s:SparkButtonSkin,就可以了。这样在IDE中,就能直观地看到图标了。但是你却发现看不到文字了。没关系,在运行时文字就出来了。

所以现在用FLEX 3的组件还是比较稳妥。可惜做FLEX3的皮肤也是比较繁琐。各有各的麻烦。

其他组件的制作,之后我会补充。