如何让Flash给出关于舞台上物体的提示?

时间:2011-10-02 19:01:34

标签: actionscript-3 actionscript flash-cs5

如果我在舞台上有一个元素(比方说一个TextField,或者一个组件ComboBox)。我想,当我在动作脚本中引用它时,IDE会给我提示,告诉我与该元素相关的所有属性,如何创建对它的引用,而不会创建代码混乱?我的意思是,我已经在IDE(实例名称)上引用了它。

因此,在IDE中我称之为myElement。

现在,如果在代码中我说var myElement:ComboBox;它在编译时抛出冲突。但是,如果我只是将它作为myElement引用,它不知道它是什么类型的元素,所以它没有给我任何帮助。我知道我可以将var myCodeElement:ComboBox = myElement称为ComboBox,但我真的想避免这种情况。

这里的正确方法是什么?

4 个答案:

答案 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.