2013-07-01 40 views
0

嗨我通過在互聯網上搜索創建了一個flash as3傳送帶。該代碼是:在flash中停止傳送帶as3

var centerX:Number = stage.stageWidth/1.7; 
var centerY:Number = stage.stageHeight/2; 
var radiusX:Number = 180; 
var radiusY:Number = 50; 
var speed:Number = 0.1; 
var minSpeed:Number = -0.05; 
var maxSpeed:Number = 0.05; 
var rangeSpeed:Number = maxSpeed - minSpeed; 
var minY:Number = centerY - radiusY; 
var maxY:Number = centerY + radiusY; 
var rangeY:Number = maxY - minY; 
var minScale:Number = 0.2; 
var maxScale:Number = 1.0; 
var rangeScale:Number = maxScale - minScale; 
var itemArray:Array = new Array(); 
itemArray.push(new cubeblue()); 

itemArray.push(new cubeblue()); 

itemArray.push(new cubeblue()); 

itemArray.push(new cubeblue()); 

itemArray.push(new cubeblue()); 

itemArray.push(new cubeblue()); 

var canvas:MovieClip = new MovieClip(); 
addChild(canvas); 

for (var i:Number = 0; i < itemArray.length; i++) 
{ 
    canvas.addChild(itemArray[i]); 
    itemArray[i].buttonMode = true; 
    itemArray[i].addEventListener(MouseEvent.MOUSE_DOWN, stop); 
    itemArray[i].itemAngle = Math.PI * 2/itemArray.length * i; 
    itemArray[i].addEventListener(Event.ENTER_FRAME, animate); 
} 



function animate(e:Event):void 
{ 
    speed = mouseX/stage.stageWidth * rangeSpeed + minSpeed; 
    e.currentTarget.x = Math.cos(e.currentTarget.itemAngle) * radiusX + centerX; 
    e.currentTarget.y = Math.sin(e.currentTarget.itemAngle) * radiusY + centerY; 
    e.currentTarget.itemAngle += speed; 
    itemArray.sortOn("y"); 

    for(var i:Number = 0; i < itemArray.length; i++) 
    { 
     canvas.setChildIndex(itemArray[i], i); 
     var pct:Number = (itemArray[i].y - minY)/rangeY; 
     var scale:Number = pct * rangeScale + minScale; 
     itemArray[i].scaleX = itemArray[i].scaleY = scale; 
    } 
} 
function stop(event:MouseEvent):void { 


} 

現在,一些修改後,與功能停止我想通過單擊層上的一個元素上停止旋轉木馬,但我不知道我能做到這一點!有人可以幫助我嗎?

Regards`

回答

0

首先,除非你打算將其覆蓋,在這種情況下,你是不是你不能命名一個功能stop。要停止旋轉木馬旋轉,只需刪除ENTER_FRAME事件即可。我改名爲你stop功能stopAnimate

var centerX:Number = stage.stageWidth/1.7; 
var centerY:Number = stage.stageHeight/2; 
var radiusX:Number = 180; 
var radiusY:Number = 50; 
var speed:Number = 0.1; 
var minSpeed:Number = -0.05; 
var maxSpeed:Number = 0.05; 
var rangeSpeed:Number = maxSpeed - minSpeed; 
var minY:Number = centerY - radiusY; 
var maxY:Number = centerY + radiusY; 
var rangeY:Number = maxY - minY; 
var minScale:Number = 0.2; 
var maxScale:Number = 1.0; 
var rangeScale:Number = maxScale - minScale; 
var itemArray:Array = new Array(); 
itemArray.push(new cubeblue()); 

itemArray.push(new cubeblue()); 

itemArray.push(new cubeblue()); 

itemArray.push(new cubeblue()); 

itemArray.push(new cubeblue()); 

itemArray.push(new cubeblue()); 

var canvas:MovieClip = new MovieClip(); 
addChild(canvas); 

for (var i:Number = 0; i < itemArray.length; i++) 
{ 
    canvas.addChild(itemArray[i]); 
    itemArray[i].buttonMode = true; 
    itemArray[i].addEventListener(MouseEvent.CLICK, stopAnimate); 
    itemArray[i].itemAngle = Math.PI * 2/itemArray.length * i; 
    itemArray[i].addEventListener(Event.ENTER_FRAME, animate); 
} 

function animate(e:Event):void 
{ 
    speed = mouseX/stage.stageWidth * rangeSpeed + minSpeed; 
    e.currentTarget.x = Math.cos(e.currentTarget.itemAngle) * radiusX + centerX; 
    e.currentTarget.y = Math.sin(e.currentTarget.itemAngle) * radiusY + centerY; 
    e.currentTarget.itemAngle += speed; 
    itemArray.sortOn("y"); 

    for(var i:Number = 0; i < itemArray.length; i++) 
    { 
     canvas.setChildIndex(itemArray[i], i); 
     var pct:Number = (itemArray[i].y - minY)/rangeY; 
     var scale:Number = pct * rangeScale + minScale; 
     itemArray[i].scaleX = itemArray[i].scaleY = scale; 
    } 
} 

function stopAnimate(event:MouseEvent):void 
{ 
    for (var i:Number = 0; i < itemArray.length; i++) 
    { 
     itemArray[i].removeEventListener(Event.ENTER_FRAME, animate); 
    } 
} 

現在renable動畫,你可以簡單地添加一個click事件可以說一個按鈕,該功能將執行

for (var i:Number = 0; i < itemArray.length; i++) 
{ 
    itemArray[i].addEventListener(Event.ENTER_FRAME, animate); 
} 

這將只是添加ENTER_FRAME事件回放在電影剪輯中itemArray

+0

非常感謝:D現在當我停止旋轉木馬時,我可以拖動一個元素? –

+0

這是一個完全不同的問題。檢查此資源http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/display/Sprite.html#startDrag() – Ronnie