2011-03-02 76 views
0

好吧,對不起,如果這是一個很容易得到答案的問題,但我在谷歌的頁面和頁面上四處張望,並且找不到任何與之有關的內容。我得到了很多幫助,但我似乎仍然無法讓我的ActionScript的這部分工作。我有一個程序,運行時允許我在鼠標點擊時隨機繪製顏色方塊。我添加了一個按鈕,該按鈕應該能夠將從矩形繪製的形狀更改爲圓形。我似乎無法獲得該按鈕的工作。這就是我的代碼到目前爲止的樣子。在按鈕上更改形狀按動作腳本3.0

var color:Number; 

stage.addEventListener(MouseEvent.MOUSE_DOWN, startDrawing); 
stage.addEventListener(MouseEvent.MOUSE_UP, stopDrawing); 

function startDrawing(e:MouseEvent):void { 
    stage.addEventListener(MouseEvent.MOUSE_MOVE, makeShapes); 
    color = Math.random() * 0xFFFFFF; 
} 

function stopDrawing(e:MouseEvent):void { 
    stage.removeEventListener(MouseEvent.MOUSE_MOVE, makeShapes); 
} 

function makeShapes(e:MouseEvent):void { 
var rect:Rect = new Rect(10,10,color); 
    addChild(rect); 
    rect.x = mouseX; 
    rect.y = mouseY; 
} 

shape_btn.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
function mouseDownHandler(event:MouseEvent):void { 

} 

在底部我留下了空白,它似乎是我卡住的部分。我試着簡單地將VAR設置爲我製作的「Ellipse」類,這會讓它起作用,但只有一次單擊按鈕。它不會留下一個圓圈,讓我用這種形狀進行繪畫。再次,我很抱歉,我覺得我正在接近解決方案,然後我打了一堵牆。

+0

任何響應從你會不勝感激。 – Roy 2011-03-06 07:38:43

回答

0

很難理解困難是什麼,但我會盡力解決我的理解。

首先,舞臺鼠標向下事件將捕捉您的按鈕事件,因此您不妨將其擺脫並堅持一個鼠標事件。

stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); 
private function onMouseDown(ev:Event):void 
{ 
    if (ev.target==shape_btn) 
     changeShape(); 
    else if (ev.target==stage) 
     startDrawing(); 
} 

或沿着這些線。 其次,我不知道Rect是什麼。這是你有權訪問的課程嗎?這是我會做沒有的特殊類:

private function makeShape():void 
{ 
    switch (shapeType) 
    { 
     case "rect": 
     drawRect(); 
     break; 
     case "circle": 
     drawCircle(); 
     break; 
    } 
} 

private function drawRect():void 
{ 
    var rect:Shape = new Shape(); 
    rect.graphics.beginFill(color); 
    rect.graphics.drawRect(0, 0, 10, 10); 
    rect.x = mouseX; 
    rect.y = mouseY; 
    addChild(rect); 
} 

private function drawCircle():void 
{ 
    var circle:Shape = new Shape(); 
    circle.graphics.beginFill(0xff0000); 
    circle.graphics.drawCircle(0, 0, 10); 
    circle.x = mouseX; 
    circle.y = mouseY; 
    addChild(circle); 
} 

,最後是changeShape功能:

private function changeShape():void 
{ 
    shapeType = shapeType=="rect"?"circle":"rect"; 
} 

有更好的方法去做,但是有兩個形狀類型打交道時只有這是可以接受的。

當然,你需要在你的代碼中的函數外部有一個var shapeType:String =「rect」。

我也認爲顏色隨機化應該在鼠標移動處理程序而不是鼠標點擊。這是故意的嗎?