jus*_*inl 6 flash components actionscript-3
我已经开始在Flash Professional中构建一个粗略的游戏引擎框架,我很好奇如何在Flash库中创建对象,我可以将其拖到舞台上并分配可从AS3访问的属性.
示例:
我想创建一个开关对象(例如一个灯开关),这样当玩家与之交互时,它会触发代码中特定的内容,例如房间里的灯开启.
我了解Flash内置了UI组件,您可以在Flash Professional环境中定义属性(请参见下图),我想知道是否有办法创建自己的自定义样式组件,以便我可以基本上拥有我的级别文件在flash(.fla)中打开,然后从我的库中拖动一个开关组件,并输入一些信息,例如它控制的是什么灯,以及我想要的任何其他信息.

(上面是我正在寻找的参数控制类型的示例)
我已经阅读了一些关于扩展Flash UIComponent类的内容,但我觉得这不是正确的方法,因为它对我想要的东西来说太过分了.我想要的是将一些基本参数从库阶段实例传递到AS3.我不想通过实例名称传递数据,因为如果我想要更复杂的交互,这似乎非常混乱.
谢谢!
我认为人们想说的是,你可以让整个事情都是数据驱动的,这样你就可以将 IDE 与数据结合起来,打造出你的最终游戏。
但考虑一下......这可能就是你想要的。
例如,如果您有一个BaseSwitch类:
public Class BaseSwitch extends MovieClip {
private var _lightName:String;
private var _light:Light;
public function get lightName():String {
return lightName;
}
public function set lightName(value:String):void {
if (value != _lightName) {
_lightnName = value;
//Note I don't advocate having children reach into their parents like this,
//but you sound like you don't want the parent involved in the process, so
//this is one way you could do it.
if (parent.hasOwnProperty(lightName) && parent[lightName] is Light) {
_light = parent[lightName];
} else {
trace('Could not find light', _lightName);
}
}
}
//other code to listen for gestures and operate the light
}
Run Code Online (Sandbox Code Playgroud)
现在,当您希望开关操作特定的灯光名称时,请创建一个库实例并将其基类设置为 BaseSwitch。当您关闭设置基类的对话框时,您会注意到它会弹出一个对话框,提示您在类路径中找不到该类,并且会生成一个对话框。您将用一个设置 lightName 的类来替换它。在根目录中创建一个与库实例同名的新 AS3 类。它应该看起来像这样:
public class SpecificSwitch {
public function SpecificSwitch() {
super();
lightName = 'theSwitch';
}
}
Run Code Online (Sandbox Code Playgroud)
其他可能的选择包括让父类根据名称将开关实例与灯光实例进行匹配,因此,如果它找到 light1 和 light1Switch,它要么向开关提供对灯光的引用,要么只是在它自己的事件监听系统。