2012-09-26 60 views
0

如果我有一个扩展MovieClip的对象,例如让我们说它是某种定制的文本字段类(InputField)。as3,使用参数在舞台上实例化对象

InputField构造函数有2个参数(placeholderText:String = null,displayAsPassword:Boolean = false)。

如果我将影片剪辑拖放到舞台上,它将被构造,但不会设置参数。有没有办法在施工时设置它们?

为了清楚起见,我希望能够将此影片剪辑拖放到舞台上,而不是创建它并从后面的代码中执行addChild()。

+0

您对构造(作者时间)和运行时间之间的差异感到困惑。标准方式中的代码在作者期间不运行(将库中的项目拖动到阶段)。我建议你阅读如何创建一个组件。 –

+0

更具体地看看作者时间组件框架 –

+0

@The_asMan:谢谢,但这不是问题。我对AS3很好,但对于flash pro界面不太好,我只是想知道是否有方法在界面中设置构造变量。下面的两个答案是正确的 - 没办法做到这一点。 – Drahcir

回答

1

您可以初始化变量里面的这个符号本身,然后在它放到舞台上时立即设置它们。您还可以从.as文件访问这些变量。

编辑:为了延长上的评论,当你宣布你已经设置了只需将它们设置为任何值,则可以通过将默认喜欢班里的两个变量,例如:

class MyInputField 
{ 
    // Will always set following variables to default values, 
    // whether using addChild or dragging symbol onto stage. 
    var placeholderText:String = "Enter text here.."; 
    var displayAsPassword:Boolean = false; 

    // If needed, store text field via constructor 
    var tf:TextField; 

    // Constructor 
    function MyInputField() 
    { 
    } 
} 
+0

谢谢,请多多解释一下。 “符号内”是什么意思? – Drahcir

+0

拖动到舞台的文本字段可作为对象访问。该文本字段是“符号”。所以,去它的属性,并设置这些变量。 – Vesper

+0

@Vesper:是的,这就是我一直在做的事情。我想知道我是否可以设置构造参数。 – Drahcir

1

我不不知道这是不是一个好主意,但你可以创建一个扩展你的InputField的类。你可以改变超级函数中的构造函数参数。

public function CustomInputField() { 
    super("hello", true); 
} 

不过,我会去一个公共职能init(),具有相同的参数,你现在在构造函数中使用。

顺便说一句你是在重新发明轮子吗? Inputfield被创建了一千次。看看temple library,它有很好的可扩展组件和表单类。

+0

+1 - 感谢您将我指向寺庙库,我的输入字段类只有很短的(60行),但您说得对,也许重新发明了车轮。 – Drahcir

相关问题