我想用AS3做這樣的事情,但我是AS3的新手,我不確定如何去編碼。AS3:我如何構造這個數組問題?
我想要做的是在陣列中有4個MC,並且我需要他們在每次點擊一個MC時移動一個MC。我需要他們循環。
所以我需要這樣的東西: 如果點擊#1 - 4,1,2,3 如果點擊#2 - 1,2,3,4 如果點擊#3 - 2,3 ,4,1 如果點擊#4 - 3,4,1,2
我將如何能夠在數組中做到這一點?我似乎無法把我的頭纏住它。
我想用AS3做這樣的事情,但我是AS3的新手,我不確定如何去編碼。AS3:我如何構造這個數組問題?
我想要做的是在陣列中有4個MC,並且我需要他們在每次點擊一個MC時移動一個MC。我需要他們循環。
所以我需要這樣的東西: 如果點擊#1 - 4,1,2,3 如果點擊#2 - 1,2,3,4 如果點擊#3 - 2,3 ,4,1 如果點擊#4 - 3,4,1,2
我將如何能夠在數組中做到這一點?我似乎無法把我的頭纏住它。
如果你想旋轉一個數組,你可以使用shift()/ push()或pop()/ unshift()的組合,具體取決於你想旋轉的方向。在你的情況下,轉移/推動會做。
這個基本的代碼說明如何做到這一點:
var mc1:MovieClip,mc2:MovieClip,mc3:MovieClip,mc4:MovieClip;
var mcs:Array = [mc1, mc2, mc3, mc4];
function rotateArray(els:Array):MovieClip
{
var el:MovieClip = els.shift();
els.push(el);
return el;
}
var nextEl:MovieClip = rotateArray(mcs);
很明顯,你還需要初始化並附加一個單擊處理程序到你的電影剪輯,在這裏MC1,MC2等只是爲了說明。
檢查AS3 Array docs上移,推,流行資訊等
要左轉明智: 移()將拉動數組的第一個元素,並將其返回(同時從取出陣列) 推()會把它在陣列結束
向右轉明智: pop()方法將拉動數組的最後一個元素,並返回它(也是從陣列中移除) unshift()會將它放回到b例如陣列。
下面是要做的事情的代碼。
關鍵是movieclips.push(movieclips.shift());
movieclips.shift()從數組中刪除第一個元素。
movieclips.push()將元素添加到數組的末尾。
另外檢查數組的pop和unshift函數。
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
public var mc1:MovieClip = new MovieClip();
public var mc2:MovieClip = new MovieClip();
public var mc3:MovieClip = new MovieClip();
public var mc4:MovieClip = new MovieClip();
public var movieclips:Array = new Array(mc4,mc1,mc2,mc3);
public class Demo extends MovieClip
{
public function Demo()
{
addEventListener(Event.ADDED_TO_STAGE, init);
}
public function init():void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
addChild(mc1);
addChild(mc2);
addChild(mc3);
addChild(mc4);
mc1.addEventListener(MouseEvent.CLICK, click);
mc2.addEventListener(MouseEvent.CLICK, click);
mc3.addEventListener(MouseEvent.CLICK, click);
mc4.addEventListener(MouseEvent.CLICK, click);
// Left as exercise: Place and position mc shape, image or bitmap
}
public function click(e:MouseEvent):void
{
movieclips.push(movieclips.shift());
}
}
}