あなたは以下の前提条件のいずれかを持っていない限り、複数のロード可能なモジュールでアプリケーションを分割する一切のポイントはありません:
- 使用すると、1つのファイルにすべてをかける場合は、読み込みおよびコンテンツ
- をアンロードするために、スマートリソース管理を持っていますデザイン時に作業するのが大きすぎたり、難しすぎたりする場合があります。
通常のAS3では、シーンインスタンスの作成/破棄とメインドキュメントclの使用が行われています彼らのマネージャーとしてお尻。ライブラリ内のコンテンツを設計し、それらのための動作AS3クラスを作成します。あなたは管理者がそれらのいずれかを表示し、次のいずれかを表示するように信号を待つべき開始時に2つのコンテンツのクラスAとBを持っている、と言うことができます:
だから、
private var APage:A;
private var BPage:B;
gotoA();
function gotoA():void
{
if (BPage)
{
BPage.destroy();
removeChild(BPage);
BPage.removeEventListener(Event.CLOSE, gotoA);
}
APage = new A;
APage.addEventListener(Event.CLOSE, gotoB);
addChild(APage);
}
function gotoB():void
{
if (APage)
{
APage.destroy();
removeChild(APage);
APage.removeEventListener(Event.CLOSE, gotoB);
}
BPage = new B;
BPage.addEventListener(Event.CLOSE, gotoA);
addChild(BPage);
}
、AとBの両方がそれぞれの方法を持っている必要があります。使用されたリソースを解放するdestroy()、イベントからメソッドのサブスクライブを解除する、表示オブジェクトを削除するなど、それらは両方とも終了時にEvent.CLOSEを起動する必要があります。
このようなページがたくさんある場合は、アルゴリズム的なアプローチが必要です。
package
{
import flash.display.Sprite;
class BasicPage extends Sprite
{
// A reference to the page manager instance.
public var Manager:PageManager;
public function destroy():void
{
while (numChildren > 0) removeChildAt(0);
Manager = null;
}
// Subclasses will have an access to this method to tell manager to show another page.
protected function showOtherPage(pageClass:Class):void
{
Manager.showPage(pageClass);
}
// A method that is called by manager when everything is ready.
// If page should take any actions on start it is a good idea to override this method.
public function startEngine():void
{
}
}
}
そして、例えばページA:
package
{
import flash.events.MouseEvent;
public class A extends BasicPage
{
// Lets say, class A in library have a designed button named Click.
public var Click:SimpleButton;
// We have things to undo here.
override public function destroy():void
{
Click.removeEventListener(MouseEvent.CLICK, onClick);
Click = null;
// Pass the destruction to superclass so it wraps its existence either.
super.destroy();
}
override public function startEngine():void
{
Click.addEventListener(MouseEvent.CLICK, onClick);
}
private function onClick(e:MouseEvent):void
{
// Lets use inherited method to show other page.
showOtherPage(B);
}
}
}
ので、PageManagerのは次のようになります。たとえば、管理者と対話し、すべてのページに必要な方法は、既に宣言したどのクラスBasicPageを作成します
package
{
public class PageManager extends Sprite
{
private var Page:BasicPage;
// constructor
function PageManager()
{
super();
showPage(A);
}
function showPage(pageClass:Class):void
{
if (Page)
{
Page.destroy();
removeChild(Page);
Page = null;
}
Page = new pageClass;
Page.Manager = this;
addChild(Page);
Page.startEngine();
}
}
}
これは最初は恐ろしく見えますが、実際はそうではありません。 PageManagerには常に最新のページがあり、別のページを表示する必要がある場合は、現在のものが定期的に破棄されます。各ページクラスは独自のコンテンツになりがちで、コーディングが簡単になります。画像全体を見る必要はないからです。永続的なデータが必要な場合は、PageManagerに保存しておき、ページ間でのデータのやりとりが不要になります。
インターネットでチュートリアルを読もうとしましたか?ここには[**有用なガイド**](https://code.tutsplus.com/tutorials/how-to-use-a-document-class-in-flash--active-3233)があります。複数のFLAは使用しません。 1つのFLAがアプリの主な出発点になります。その後、より多くの関数などで他のASファイルを 'インポート 'することができます。ネットFLAにオーディオ/ビジュアルコンテンツがある場合は、そのファイルをSWFにコンパイルします。主なアプリでは、SWFをロードして、SWF自身のコンテンツや独自の機能にアクセスできるようにします。 –