2010-11-23 6 views
0

最終的には、.nativePathをバインド可能にするか、Adobe Airで変更されたときにイベントを発生させたいと思います。私はFileクラスを拡張し、うまくいくと思った。File.nativePathをバインド可能にしますか?または拡張する方法flash.filesystem.file

しかし、どこからでもそのソースを見つけることはできません(私はそれを拡張する方法を知っています)。私はhttp://opensource.adobe.com/svn/opensource/flex/sdk/をかなり掘り下げて何も見ませんでした。

.nativePathをバインド可能にするか、ファイルを拡張する方法はありますか?

答えて

0

File Classは、Flashパッケージに含まれているため、オープンソースではありません.Adobe開発者の仲間入りがない限り、コードを手に入れることはできません。

理論的には、finalとしてマークされていないので、クラスを拡張してnativePath Bindableをそのようにすることができますが、そのメリットはわかりません。それを評価するためにユースケースを拡張する必要があります。

+0

myFile.nativePathにリンクされたいくつかの異なるアイテムを用意する予定でした。特に、ラベル、textInput、as3corelibのFileMonitorのソースです。いくつかの異なる関数がmyFileに影響を与える可能性があるので、他の項目をmyFile.nativePathにバインドするのが最も簡単だとわかりました。 –

0

何かをサブクラス化する必要はありません。限り、それは最終的ではないとして、それを拡張し、あなたが必要とする何か上書き:

public class BindableFile extends File { 
    [Bindable(event="nativePathChanged")] 
    override public function get nativePath():String { 
     return super.nativePath; 
    } 
    override public function set nativePath(value:String):void { 
     super.nativePath = value; 
     dispatchEvent("nativePathChanged"); 
    } 
} 

テストされていないが、現実的な:)

+0

クラスを拡張してメソッドをオーバーライドする場合。サブクラス化と同じではありませんか? – JeffryHouser

+0

もちろんです。私はそれらの言葉が違うというわけではありません... – alxx

1

alxxに見える、あなたのコードは間違いなく近いものでした。ありがとう - それは私にそれを広げる方法のアイデアを与えました。作業コード:

public class FileEx extends File 
    { 
     public function FileEx(path:String=null) 
     { 
      super(path); 
     } 

     [Bindable("nativePathChanged")] 
     override public function get nativePath():String 
     { 
      return super.nativePath; 
     } 

     override public function set nativePath(value:String):void 
     { 
      super.nativePath=value; 
      dispatchEvent(new Event("nativePathChanged")); 
     } 
    } 
関連する問題