2010-11-23 16 views
0

Je voudrais finalement rendre .nativePath lisible ou déclencher un événement lorsqu'il change dans Adobe Air. Je pensais juste étendre la classe File et être bon.Rendre File.nativePath lisible? ou comment étendre flash.filesystem.file

Mais je ne peux pas trouver sa source n'importe où (donc je sais comment l'étendre). J'ai creusé à travers http://opensource.adobe.com/svn/opensource/flex/sdk/ un peu et je n'ai rien vu.

Existe-t-il un moyen de rendre .nativePath lisible ou d'étendre le fichier?

Répondre

0

Le File Class fait partie du package Flash, il n'est donc pas open source et vous ne pourrez pas obtenir le code (à moins que vous ne soyez dans le cercle des développeurs Adobe).

En théorie, vous pouvez étendre la classe, car elle n'est pas marquée comme finale, et rendre ainsi nativePath Bindable, mais je ne suis pas sûr de l'avantage. Vous devrez développer votre cas d'utilisation pour l'évaluer.

+0

Mon plan était d'avoir un couple d'éléments différents liés à myFile.nativePath. En particulier, un label, un textInput et la source d'un FileMonitor de as3corelib. Quelques fonctions différentes peuvent affecter myFile, donc j'ai pensé qu'il serait plus facile de lier d'autres éléments à myFile.nativePath. –

0

Vous n'avez pas besoin de source pour sous-classer quelque chose. Tant que ce n'est pas définitive, étendre juste et remplacer quelque chose dont vous avez besoin:

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"); 
    } 
} 

Non testé, mais il semble réaliste :)

+0

Si vous étendez une classe et substituez une méthode; n'est-ce pas la même chose que le sous-classement? – JeffryHouser

+0

Bien sûr que oui. Je ne voulais pas dire que ces termes sont différents ... – alxx

1

alxx, votre code est certainement proche. Merci - cela m'a donné une idée sur la façon de l'étendre. Le code de travail:

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")); 
     } 
    }