2011-01-18 5 views
0

インクルードされた* .asファイルの関数のローカル変数に対してオートコンプリートが機能しないのはなぜですか?FlashDevelopのオートコンプリートがインクルードファイルで機能しない

Main.mxml:

<fx:Script> 
<![CDATA[ 
    include "code.as";  // or <fx:Script source="code.as"/>, doesn't matter 
]]> 
</fx:Script> 

code.asたとえばコードクラスがインポートされた場合

import mx.controls.Button; 
var foo:Button = new Button(); 
foo. <---- autocompletion is working here 

function myFunc() { 
    var bar:Button = new Button(); 
    bar. <----- doesn't work 
} 
+0

もっとコードを共有してください。 – Neeraj

答えて

3

オートコンプリートのみ動作する、またはクラスは、クラスの.as拡張場合。 クラスである必要があります。 'include code.as'を使用すると、code.asはクラスではなく、基本的に変数、インポート、関数のコレクションなので、オートコンプリートではクラスのようにアクセスできません。

コードビハインドパターンは、あなたのやっていること(mxmlの分離ロジック)と似ていて、atuocompletionが可能です。これを使用するには:

  1. こと はあなたが例えば使用したい MXMLコントロールを拡張することActionScriptクラスを作成します。 HBoxまたはUIComponent
  2. あなたのロジックをこの Actionscriptクラスに入れてください。
  3. 次に、 がActionscriptクラスを拡張するMXMLクラスを作成します。

コード補完は、パブリック/プロテクトされた変数と関数にアクセスするための新しいカスタムMXMLクラスで機能します。

+0

私の場合、コードビハインドパターンは意味をなさない。私はコードを複数の継承のフォームとして含めることにしました。私は公共の機能にもインターフェースをつけましたが、FlashDevelopはオートコンプリート機能を見つけることができません。かなり迷惑な、特に*すべて*を自動補完するSublimeを使用した後。 – Glenn

+0

ねえグレン。余分なコードをクラスファイルや静的ユーティリティファイルに入れない方が良いでしょうか?しかし、私はあなたが多重継承をしようとすることの意味を知っています。 – Ryan

+0

なぜ私がエッセイを書くことなくインクルードするのかを説明するのは難しいですが、基本的にビュークラスにコア "エンジン"を提供して、すべて同じ方法でデータモデルとやり取りします。たとえば、ディスプレイのオブジェクトをクリーンアップする際にフレックスが酷かったとします。さて、インクルードされたファイルに「デストラクタ」関数を追加しました。そのため、ガベージコレクタがそれらを無視するのを気にしないうちに、バックグラウンドでレンダリングしないように、私が知っているクラスを消去することができます。小さな例ですが、数百のクラスに渡って繰り返す必要のあることはたくさんあります。 – Glenn

関連する問題