0

flashbuilder 4.6 (apache flex sdk) に含まれている .as ファイルを使用しているケースがあります (コードを投稿しますが、コードの量のサイズのためにやり過ぎだと思います)... 含まれているファイルにはいくつかの正常に動作する AS3 コードですが、PARENT mxml ドキュメントで定義されている関数への呼び出しを追加しただけです...含まれている .as ファイルが関数が何であるかを認識していないことを報告するエラーが表示されます。まったく存在しません。

関数呼び出しの先頭に追加する必要があるものはありますか? 数日前の別のプロジェクトで、outerDocument を使用しなければならなかった最初の本格的な itemrenderer の試みの 1 つに取り組んでいるときに発見したことを知っています。関数の前に...つまり-

outerDocument.MyFunctionNameHere();

親ドキュメントにパブリック関数として定義された関数がある限り、含まれている .as ファイルのコードから「見える」はずですよね?

4

1 に答える 1

0

これが役立つことを願っています。

includes.as - インクルードファイル

// ActionScript file
public function includedFunction(item:Object):String{
    var data = parentFunction(item); //call function from parent mxml
    return data;
}

AS3 方式 (バインド不可)

<fx:Script>
    <![CDATA[        
    include "includes.as";

    public function parentFunction(data:Object):String{             
        return "Hello From Main MXML";
    }
    ]]>
</fx:Script>
<s:DataGrid dataProvider="{new ArrayCollection(new Array(1,2,3))}">
    <s:columns>
        <s:ArrayList>
           <s:GridColumn>
             <s:itemRenderer>
                <fx:Component>
                  <s:GridItemRenderer>
                    <s:Label text="{outerDocument['includedFunction'].call(null, new Array(data))}"/>
                  </s:GridItemRenderer>
                </fx:Component>
             </s:itemRenderer>
           </s:GridColumn>
        </s:ArrayList>          
     </s:columns>
</s:DataGrid>

適切な方法

<fx:Script source="includes.as" />
<fx:Script>
    <![CDATA[   
    public function parentFunction(data:Object):String{             
        return "Hello From Main MXML";
    }
    ]]>
</fx:Script>
<s:DataGrid dataProvider="{new ArrayCollection(new Array(1,2,3))}">
    <s:columns>
        <s:ArrayList>
           <s:GridColumn>
             <s:itemRenderer>
                <fx:Component>
                  <s:GridItemRenderer>
                    <s:Label text="{outerDocument.includedFunction(data)}"/>
                  </s:GridItemRenderer>
                </fx:Component>
             </s:itemRenderer>
           </s:GridColumn>
        </s:ArrayList>          
     </s:columns>
</s:DataGrid>
于 2013-07-15T21:17:08.177 に答える