1. 我发现如果在把一个mc加入它的父mcP之前,就设定mc.mask为mcP上面的一个mcM,
那么就不需要考虑mc被添加之后的depth的问题,可能是系统会自动来处理这个问题。 2. 为什么在有的时候,会使用addedToStage这个事件来触动一些mc上面的初始化代码的运行。 3. 当mc跳入另一个关键帧的时候,它上面的子mc会都重新被实例化。 4. 一个mc的mouseClick事件是被逐层向上传递的,可以handle多次,可以首先在它上面处理,然后又在它的父mcP上面处理。比如: 在main_mc上面有mainMenu_mc,在mainMenu_mc上面有个container_mc,container_mc上面有若干个mainMenuItem_mc。 main_mc ——> mainMenu_mc ——> container_mc ——> mainMenuItem_mc1 ——> mainMenuItem_mc2 ——> mainMenuItem_mc3 ....... 在mainMenu_mc的初始化代码里面给它自己的mouseDown事件注册一个listener:onMouseDown,在onMouseDown里面,
将参数e.target转换类型为mainMenuItem,并进行处理。
然后在main_mc代码上面给mainMenu_mc注册一个mouseDown事件的listener:onMainDown,在onMainDown里面,
也将e.target转换类型为mainMenuItem,并进行处理。 这个做法里面,如果mainMenuItem有子MC的话,需要设定它的属性mouseChildren为false,
否则将不能够将e.target转换类型为mainMenuItem,因为会收到子mc的事件, 5. 对于set方法的利用,很多动画效果的代码是放在set方法里面的,这样,当改变某些属性值的时候,相应的缓动效果就自然被加了进去,
比如contentHolder的_content属性,和mainMenuItem的_select属性。
另外还有mainMenuItem的get content方法,这个方法里有生成一个相应的内容对象,根据type属性。 6. 通过加mask,来控制一张图的大小。 7. 通过使用SingletonEnforcer类来强制一些静态类,这样可以保证该类的对象能够持久存在,并被其他类的对象共享。
比如ConfigManager与PhotoStage类。 public class ConfigManager extends EventDispatcher { private static var _configManager:ConfigManager; public function ConfigManager(singletonEnforcer:SingletonEnforcer) { // NOTHING HERE } public static function getInstance():ConfigManager { if (_configManager == null) { _configManager = new ConfigManager(new SingletonEnforcer()); } return _configManager; } } package net.flashden.lydian.photogallery { class SingletonEnforcer {} }