如果我在舞台上有一个元素(比方说一个TextField,或者一个组件ComboBox)。我想,当我在动作脚本中引用它时,IDE会给我提示,告诉我与该元素相关的所有属性,如何创建对它的引用,而不会创建代码混乱?我的意思是,我已经在IDE(实例名称)上引用了它。
因此,在IDE中我称之为myElement。
现在,如果在代码中我说var myElement:ComboBox;它在编译时抛出冲突。但是,如果我只是将它作为myElement引用,它不知道它是什么类型的元素,所以它没有给我任何帮助。我知道我可以将var myCodeElement:ComboBox = myElement称为ComboBox,但我真的想避免这种情况。
这里的正确方法是什么?
答案 0 :(得分:1)
啊!解决方案是将实例名称包装在它所属类型的构造函数中,然后继续执行,否则......所以......
在我的IDE中,我有一个ComboBox组件,我给出了myComboBox的实例名称。
稍后在我的代码中,当我希望解决它时,而不是仅仅说myboboBox,我将其作为ComboBox(myComboBox)引用,然后IDE为我提供了使用它所需的所有弹出上下文帮助。我不确定这是否会在幕后引起任何额外的工作,但我认为,因为我没有在它上面调用新的,所以它只是以静态的方式使用它。如果有人对此有任何想法,我很乐意看到它们。
答案 1 :(得分:0)
这个iirc有一个任意的命名约定; 使用指定的后缀结束实例名称:
_mc = MovieClip
_txt = TextField
等。 它们都在名为ActionsPanel * .xml的文件中定义,并在其中定义它们。 像这样:
<typeinfo pattern="*_mc" object="flash.display.MovieClip"/>
<typeinfo pattern="*_array" object="Array"/>
<typeinfo pattern="*_str" object="String"/>
<typeinfo pattern="*_btn" object="flash.display.SimpleButton"/>
<typeinfo pattern="*_txt" object="flash.text.TextField"/>
<typeinfo pattern="*_fmt" object="flash.text.TextFormat"/>
<typeinfo pattern="*_date" object="Date"/>
<typeinfo pattern="*_sound" object="flash.media.Sound"/>
<typeinfo pattern="*_xml" object="XML"/>
<typeinfo pattern="*_xmlnode" object="flash.xml.XMLNode"/>
<typeinfo pattern="*_xmlsocket" object="flash.net.XMLSocket"/>
<typeinfo pattern="*_color" object="fl.motion.Color"/>
<typeinfo pattern="*_cm" object="flash.ui.ContextMenu"/>
<typeinfo pattern="*_cmi" object="flash.ui.ContextMenuItem"/>
<typeinfo pattern="*_pj" object="flash.printing.PrintJob"/>
<typeinfo pattern="*_err" object="Error"/>
<typeinfo pattern="*_cam" object="flash.media.Camera"/>
<typeinfo pattern="*_lc" object="flash.net.LocalConnection"/>
<typeinfo pattern="*_mic" object="flash.media.Microphone"/>
<typeinfo pattern="*_nc" object="flash.net.NetConnection"/>
<typeinfo pattern="*_ns" object="flash.net.NetStream"/>
<typeinfo pattern="*_so" object="flash.net.SharedObject"/>
<typeinfo pattern="*_video" object="flash.media.Video"/>
如果你胆敢的话,你可以在那里添加你自己的定义:)
答案 2 :(得分:0)
一种方法是打开“自动声明阶段实例”选项,而不是在代码中自己声明实例。
关于Flash CS IDE,我有点生疏,我现在使用Flash Builder,但是如果我记得正确,如果你在舞台上命名实例并声明具有相同名称和类型的公共变量,它们将是连接的。因此,如果你在舞台上有一个名为myTextField的TextField,你可以在代码中声明:
public var myTextField:TextField;
然后在编写代码时获得代码完成提示,然后在构建并运行swf时,舞台上的实例将连接到您声明的变量,可以这么说。或者声明的变量引用舞台上的实例,无论你喜欢看它的方式。
答案 3 :(得分:0)
只有在知道var的类型/类时,IDE才会给出代码提示 从你在这里得到的回应中可以看出,有很多方法可以做到这一点 我会以两种方式中的一种来做,这取决于我是否已经制作了一个实例 第一种方法是实例不存在
// create a var, type cast it, and use new on it
var tf:TextField = new TextField();
tf. // whenever you type a dot after tf it will trigger the hinting.
第二种方法是输入已存在的实例
(myComboBox as ComboBox). //again typing a "." dot after the ")" will trigger code hinting.
并组合2种方法
var myCombo:ComboBox = (myComboBox as ComboBox)
myCombo // again typing the dot will do it.