2010-08-28 245 views
0

我是AS3的新手。學習如何創建課程。是comp = new HouseObjects創建一個新班級? Comp是否創建HouseObjects的實例?我意識到這是在公共類TreeHouse中。我在想,HouseObjects,我如何設置它不是一個類...不知道什麼是設置類和屬性的正確方法。在AS3中創建類和屬性

另外我注意到,當我試圖使用相同的鏈接名稱HouseObjects鏈接另一個movieclip - 它要求輸入一個獨特的類。我試圖從同一個類創建多個實例,稱爲HouseObjects。

alt text

包{

import flash.display.MovieClip; 
import flash.events.MouseEvent; 
import flash.events.Event; 

public class TreeHouse extends MovieClip 

{ 

private var comp:MovieClip; 
var powerData:int; // stores user data (of selected data) 
//var currentPower:int; // stores current power 

public function TreeHouse() 
{ 
    comp = new HouseObjects; // linkage in library 
    comp.power = 2; // amount of power 
    comp.name = "comp"; 
    comp.buttonMode = true; 
     comp.bstate = 0; // button state 


    //add event listeners -- listens to functions that are called  
    comp.addEventListener(MouseEvent.MOUSE_OVER, rolloverToggle); 
    comp.addEventListener(MouseEvent.MOUSE_OUT, rolloutToggle); 
    comp.addEventListener(MouseEvent.CLICK, toggleClick); 
    comp.addEventListener(MouseEvent.CLICK, toggleClick); 

    stage.addChild(comp); // add computer to stage ----------------------------------- 
    trace("tracing..."); 
    comp.x = 100; 
    comp.y = 100; 

} 

// function rollOver -------------------------------------------------------------- 
function rolloverToggle(e:MouseEvent) {  
    if (e.currentTarget.currentFrame == 1) 
    e.currentTarget.gotoAndStop(2); 
    if (e.currentTarget.currentFrame == 3) 
    e.currentTarget.gotoAndStop(4); 
} 

// function rollOut-- --------------------------------------------------------------  
function rolloutToggle(e:MouseEvent) { 
    if (e.currentTarget.currentFrame == 2) 
    e.currentTarget.gotoAndStop(1); 
    if (e.currentTarget.currentFrame == 4) 
    e.currentTarget.gotoAndStop(3); 
} 

// function toggleClick------------------------------------------------------------- 
    function toggleClick(e:MouseEvent) { 


    // On MouseEvent gotoAndStop(Frame Number) 
    if (e.currentTarget.currentFrame == 2) 
    { 
    e.currentTarget.gotoAndStop(3); 
    e.currentTarget.bstate = 1; 
    } 

    if (e.currentTarget.currentFrame == 4) 
    { 
    e.currentTarget.gotoAndStop(1); 
    e.currentTarget.bstate = 0; 
    }  

//var powerData:int = HouseObjects[e.currentTarget.power]; // set power value 

    // Find out which object selected------------------------------------------------- 
    //trace("movieClip Instance Name = " + e.currentTarget); // [object Comp] 
    //trace(houseArray[e.currentTarget.name]); // comp 
    trace("using currentTarget: " + e.currentTarget.name); // comp 
    //trace("powerData: " + powerData); // power of user data 
    //trace("houseArray: " + houseArray[0]); // the 0 index of house array 
    trace(e.currentTarget.power); // currentTarget's power************ 


    } 

} //end of class 

} // end of package 

回答

0

我不太清楚,如果我理解正確你的問題。 comp = new HouseObjects創建一個類型爲HouseObjects的新實例(對象)。 (關於面向對象的基礎知識的一點研究可能會讓你的生活更容易。)

關於»請輸入一個唯一的類名«錯誤:您不能將相同的類分配給兩個庫符號,因爲符號被連接到這樣如果您創建新實例(var x = new HouseObjects; addChild(x);),則鏈接符號中的內容也會添加到顯示列表中。如果有多個庫符號鏈接到同一個類,那麼Flash編譯器將如何知道選擇哪一個?

0

如果您是AS3的新手,尤其是OOP,那麼您應該查看Moock's Essential Actionscript 3,這對於AS3中面向對象的一步一步教育來說是非常棒的。

HouseObjects似乎是一類和你的變量comp

你有一個重複的定義創建它的一個新的例如。看起來您正試圖使用​​Flash Pro爲lightbulb擴展HouseObjects。它在Flash Pro中不能像這樣工作。您正在創建一個MovieClip符號並給它一個類定義。它必須擴展MovieClip,在這種情況下你不能改變它。你很可能將HouseObjects擴展爲AS3文件並在你的應用程序中使用它。

個人認爲,如果你想真的讓你的頭與AS3 OOP你應該得到的書,擺脫Flash Pro。使用Flash Builder,FDT,Flash Develop或IntelliJ IDEA等IDE。當您遠離Flash Pro IDE的對話框和其他複雜問題時,要更容易理解:>