コードを整理するために、(長い) メイン コントローラー クラスを個別のファイルに分割しようとしていますが、新しいファイルは引き続きメイン コントローラー クラスの変数と関数にアクセスできる必要があります。
コントローラー クラスから新しいクラス/ファイルにコードをカット アンド ペーストして、コントローラー クラスが新しいクラスを呼び出せるようにし、新しいクラスがコントローラー クラスのプロパティと関数にアクセスできるようにしようとしています。
適切な設計パターンを完全に殴打しているわけではないと仮定すると、以下は、このタスクを達成するための失敗した試みです。
package
{
import flash.display.Sprite;
import flash.events.Event;
public class Test extends Sprite
{
public var myString:String;
public function Test()
{
if (stage)
init(null);
else
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(evt:Event):void
{
if (hasEventListener(Event.ADDED_TO_STAGE))
removeEventListener(Event.ADDED_TO_STAGE, init);
/////////////// MOVE COMMENTED CODE TO NEW FILE ///////////////////////
//
// //Assign The String A Value
// myString = "Hello world";
//
// //Draw A Blue Square
// var sq:Sprite = new Sprite();
// sq.graphics.beginFill(0x0000FF);
// sq.graphics.drawRect(10, 10, 100, 100);
// sq.graphics.endFill();
// super.addChild(sq);
//
// //Call Tracer Function
// tracer();
//
//////////////////////////////////////////////////////////////////////
//Call pasted method in NewFile.as
NewFile.myNewFunction(); // <- this doesn't work
}
public function tracer():void
{
trace(myString);
}
}
}
新しいファイルには Controller クラスへのアクセス権がありません - 動作しません。コードが削除されておらず、元の場所に残っているかのように、Controller クラスのプロパティ、関数、ステージなどにアクセスできるように、新しいファイルを作成する方法を教えてください。
package
{
public class NewFile
{
public static function myNewFuntion():void
{
//Assign The String A Value
myString = "Hello world";
//Draw A Blue Square
var sq:Sprite = new Sprite();
sq.graphics.beginFill(0x0000FF);
sq.graphics.drawRect(10, 10, 100, 100);
sq.graphics.endFill();
super.addChild(sq);
//Call Tracer Function
tracer();
}
}
}