将值从Textinput传递到Controller文件

时间:2012-07-25 12:13:04

标签: flex flash-builder

我目前正在尝试整合一个简单的Illustrator插件,并且来自设计背景,这被证明是一项非常重要的任务,我有使用JS的经验,但不是使用Flex。

我想要做的是在Illustrator中有一个面板,带有一个输入字段和一个按钮。您在输入中键入内容并按下按钮,并将带有所需文本的文本框添加到画布中。

但是如何将值从mx:Textinput传递给Controller.as文件?我在网上找不到答案。

这是我的main.mxml文件:

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" historyManagementEnabled="false">
    <mx:Script>
        <![CDATA[
            private var c:Controller = new Controller();
        ]]>
    </mx:Script>

    <mx:VBox height="100%" width="100%" verticalAlign="middle" horizontalAlign="center">
        <mx:Label text="myVariable"></mx:Label>
        <mx:TextInput name="TextValue"/> // I want the text value to be passed to the Controller class so I can pass it on to my JSX function
        <mx:Button label="Run" click="c.run()"/>
    </mx:VBox>

</mx:Application>

这是我的Controller.as文件:

package
{
    import flash.external.HostObject;

    public class Controller
    {
        [ Embed (source="myScript.jsx" , mimeType="application/octet-stream" )]

        private static var myScriptClass:Class;

        public function run():void {
            var  jsxInterface:HostObject = HostObject.getRoot(HostObject.extensions[0]);
            jsxInterface.eval( new myScriptClass ().toString());

            //calling from AS to JSX
            jsxInterface.myJSXFunction (myVariable); //This is where I want the value to be passed to

        }

    }
}

2 个答案:

答案 0 :(得分:1)

首先在Controller中声明公共财产public var myTextValue : String;

然后在MXML <mx:TextInput text="@{c.myTextValue}"/>

中声明双向绑定

现在,myTextValue属性始终包含实际值。

但是很久以前就引入了双向绑定。

或者,您可以向change实例TextInput

添加<mx:TextInput id="myTextInput" change="c.myTextValue = myTextInput.text"/>事件监听器

答案 1 :(得分:1)

您也可以将字符串直接传递给c.run()调用。

public function run(myString:String):void {
...
    jsxInterface.myJSXFunction (myString)
...

然后

<mx:TextInput id="TextValue"/>
<mx:Button label="Run" click="c.run(TextValue.text)"/>

只是另一种方法。

卢瓦克