0

私は現在、単純な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

        }

    }
}
4

2 に答える 2

1

最初public var myTextValue : String;にコントローラーでパブリック プロパティを宣言します。

次に、MXML で双方向バインディングを宣言します<mx:TextInput text="@{c.myTextValue}"/>

myTextValueこれで、常に実際の値を含むプロパティができました。

しかし、双方向バインディングが導入されたのはそれほど前のことではありません。

または、インスタンスchangeにイベント リスナーを追加することもできますTextInput<mx:TextInput id="myTextInput" change="c.myTextValue = myTextInput.text"/>

于 2012-07-25T12:46:23.453 に答える
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)"/>

ちょうど別のアプローチ。

ロイク

于 2012-07-25T23:04:03.970 に答える