2013-01-17 22 views
1

我正在尋找一個很好的教程,概述瞭如何在外部類之間進行通信以及如何正確確定類和範圍,但是我正在努力尋找一篇文章。有沒有人有任何建議,我可以採取的教程,以更好地熟悉這些概念?我在哪裏可以找到關於AS3跨學科交流的好文章?

+0

什麼是外部類?如果您指的是在運行時加載的類,則需要實現一個接口以便與加載的數據進行交互。 –

回答

2

這聽起來像你正在尋找一般的面向對象編程教程。 http://active.tutsplus.com/tutorials/actionscript/as3-101-oop-introduction-basix/

彷彿概述 - 與不同類別的您可以大多數面向對象的語言溝通:

從類繼承。 (使用「擴展」與AS3關鍵字)

class Square { 
    var x, y, width, height; 
} 

class Rectangle extends Square{ 
    function changeDimensions(newWidth, newHeight):void { 
     super.width = newWidth; 
     super.height = newHeight; 
    } 
} 

有一個類的實例作爲類的屬性(見http://en.wikipedia.org/wiki/Has-a)。

class Tire { 
    var radius, tred; 
} 

class Car { 
    var width, depth; 
    var make; 
    var leftBackTire:Tire; 
    var rightBackTire:Tire; 
    var leftFrontTire:Tire; 
    var rightFrontTire:Tire; 
} 

將外部類的實例傳遞給函數參數的函數。

class Person { 
    var position; 
} 

class Treadmill { 
    function movePerson(personToMove:Person):void { 
     personToMove.x += 5; 
    } 
} 

創建外部類的全局實例,並隨時隨地訪問它(的範圍的任何類外)。

class World { 
    var inhabitance; 
} 

var earth:World = new World(); 

class InhabitanceCalculator { 
    function calcuateEarthInhabitance():void { 
     earth.inhabitance = 3000000000; 
    } 
} 

(AS3尤其)使用預先定義的事件的系統,其中類註冊一個被稱爲對於某個事件的功能,即一個外部類發送給任何人聽。

class Scoreboard extends EventDispatcher { 
    var points = 0; 
    Scoreboard(player:Player) { 
     player.addEventListener("PlayerKilledEnemy", onPlayerKilledEnemy); 
    } 
    function onPlayerKilledEnemy():void { 
     points += 1; 
    } 
} 

class Player extends EventDispatcher { 
    function killEnemy():void { 
     //Aaaah! 
     dispatchEvent(new Event("PlayerKilledEnemy")); 
    } 
} 

請注意,我沒有在變量/類/函數中添加'public'關鍵字。您需要預先考慮您想讓外部課程有權訪問的任何內容。

0

我也會花一些時間看看自定義事件。正確使用時,它們可以在AS3中的類之間提供極其靈活的管道。

相關問題