AS3 nelle interazioni tra gli oggetti ad applicare l'approccio sarà preoccupato per un sacco di parti. In convenzionali object-oriented orientate al processo nel corso dei quattro mesi che sono trascorsi passati. I cambiamenti nel codice, ma è quello di utilizzare scripting orientato agli oggetti devono essere sempre, in agonia. Interazioni di cui preoccuparsi che di design e sviluppo, design, ...
Dovrebbero essere progettati in modo che due parti sono un po 'scomodo. Esistenti in uno spazio così tante volte che ho fatto, perché è stato necessario progettare un tempo. Quindi il dilemma per qualche tempo è stato perso in questo momento. Il piano ormai abituati al codice, ma non è perfetto. A causa di un tale rapporto con AS2 utile "_global", "_root" e pensare i due approcci sono stati.
In primo luogo, la classe principale "GlobalAndRoot" e rappresentante di classe _global poeta un "GlobalVars" e _global per l'accesso alla _root "AccessScope" fatta la classe. E "classe AccessScope" crea un oggetto da l'accesso interno alla _root "AccessChildRoot" crea un ulteriore esempio della classe è stato creato.
Lasciate un codice.
GlobalAndRoot.as
import flash.display . Sprite ; import flash.events . MouseEvent ; // 코드를 보면 짜임새를 알 수 있어야 하기 때문에 같은 패키지이지만 선언을 해준다. import GlobalVars; import AccessScope; public class GlobalAndRoot extends Sprite { public var rootName : String = "GlobalAndRoot.rootName" public function GlobalAndRoot ( ) { // GlobalVars 클래스에 선어되어있는 정적 변수들 GlobalVars.vars = "jin_u" GlobalVars.varsArr = [ 0 , 1 , 2 ] ; // AccessScope 클래스에서 global, root 접근 var accessScope : AccessScope = new AccessScope ( ) addChild ( accessScope ) accessScope.traceFunc ( ) ; /* output : GlobalVars : jin_u GlobalVars : 0,1,2 accessScope : GlobalAndRoot.rootName */ } } } pacchetto (flash.display importazione. Sprite; flash.events importazione. MouseEvent / / guardare il codice, perché è necessario trovare la trama, ma lo stesso pacchetto permette la dichiarazione. GlobalVars importazione; AccessScope importazione; public class GlobalAndRoot estende Sprite (rootName var pubblico : String = "GlobalAndRoot.rootName" pubblica funzione GlobalAndRoot () (/ / static GlobalVars variabili di classe sono GlobalVars.vars seoneo = "jin_u" GlobalVars.varsArr = [0, 1, 2]; / / classe AccessScope globale , var root accessScope accesso: AccessScope nuovo AccessScope = () addChild (accessScope) accessScope.traceFunc (); / * output: GlobalVars: GlobalVars jin_u: 0,1,2 accessScope: * GlobalAndRoot.rootName /)))
GlobalVars.as
pacchetto ( GlobalVars GlobalVars classe pubblica ( vars : String ; var vars pubblico statico: String; varsArr : Array = [ ] ; public var varsArr statico: Array = []; ) )
AccessScope.as
import flash.display . Sprite ; import GlobalVars; import GlobalAndRoot; import AccessChildRoot; public class AccessScope extends Sprite { public function AccessScope ( ) { // Constructor } public function traceFunc ( ) : void { trace ( "GlobalVars : " + GlobalVars.vars ) ; trace ( "GlobalVars : " + GlobalVars.varsArr ) ; var _root : GlobalAndRoot = root as GlobalAndRoot; trace ( "accessScope : " + _root.rootName ) ; var accessChildRoot : AccessChildRoot = new AccessChildRoot ( ) ; addChild ( accessChildRoot ) ; accessChildRoot.traceFunc ( ) ; /* output : AccessChildRoot : GlobalAndRoot.rootName */ } } } pacchetto (flash.display importazione. Sprite; GlobalVars importazione; GlobalAndRoot importazione; AccessChildRoot importazione; public class AccessScope estende Sprite (pubblica funzione AccessScope () (/ / Costruttore) traceFunc funzione pubblica (): void (trace ("GlobalVars:" + GlobalVars . vars); trace ("GlobalVars:" + GlobalVars.varsArr); _root var: GlobalAndRoot = root come GlobalAndRoot; trace ("accessScope:" + _root.rootName); accessChildRoot var: AccessChildRoot nuovo AccessChildRoot = (); addChild (accessChildRoot ); accessChildRoot.traceFunc (); / * output: AccessChildRoot: * GlobalAndRoot.rootName /)))
AccessChildRoot.as
pacchetto ( . Sprite ; importazione flash.display. Sprite; GlobalAndRoot importazione; AccessChildRoot extends Sprite public class AccessChildRoot estende Sprite ( AccessChildRoot ( ) pubblica funzione AccessChildRoot () ( / / Costruttore ) traceFunc ( ) : void pubblico traceFunc function (): void ( GlobalAndRoot = root as GlobalAndRoot; var _root: GlobalAndRoot root = come GlobalAndRoot; "AccessChildRoot : " + _root.rootName ) ; trace ("AccessChildRoot:" + _root.rootName); ) ) )
utilizzato in AS2 "_global" deve utilizzare la proprietà statica "_root" è tratto il seguente: la classe principale "root _" vi permetterà di accedere.
GlobalAndRoot = root as GlobalAndRoot; var _root: GlobalAndRoot root = come GlobalAndRoot;
Di primo livello "root" di accesso può essere utile se avete bisogno di essere qui è.














1. Commento da Han Sanghun
12/Nov/2008 alle 10:58
In questo modo, la creazione di un singolo oggetto di dati, e
Global.data.param1 = 1;
Global.data.param2 = 2;
Questo approccio è molto più efficiente di utilizzare devozione.
2. Commento da jin_u
12/Nov/2008 alle 11:46
Ah .. Davvero? Per fare un esempio, ma casualmente neoteungeogin, si deve essere efficiente.
Le variabili piuttosto che mettere un segno su un oggetto è malingeoji più efficiente?
3. Pingback da root come «jin_u MovieClip come blog
13/Sep/2009 alle 01:24
[...] Aveva scritto "codice di accesso come root aspetto? Ridurre il codice riportato di seguito. 2 var [...]