近期才努力學習AS3.0,有些語法不是很熟悉與了解,再請大神幫幫忙~QQ
"在場景裡面隨機創建star,並監聽每個star是否播放完畢,播放完畢的star在場景中刪除"
import flash.display.MovieClip;
import flash.events.Event;
// 創建名為 "star" 的容器 MovieClip
var starContainer:MovieClip = new MovieClip();
addChild(starContainer);
// 添加進入幀事件的監聽器
starContainer.addEventListener(Event.ENTER_FRAME, generateStars);
function generateStars(event:Event):void {
// 創建星星
var star:MovieClip = new STAR();
star.x = Math.random() * stage.stageWidth;
star.y = Math.random() * stage.stageHeight;
star.scaleX = star.scaleY = 0.3 + 0.2 * Math.random();
star.alpha = 1 + 0.3 * Math.random();
starContainer.addChild(star);
// 監聽星星的完成事件
star.addEventListener(Event.COMPLETE, onStarComplete);
// 檢查是否播放完畢
if (star.currentFrame == star.totalFrames) {
trace(star.currentFrame);
// 如果已經播放完畢,手動觸發完成事件
onStarComplete(new Event(Event.COMPLETE));
}
}
function onStarComplete(event:Event):void {
var completedStar:MovieClip = event.target as MovieClip;
trace(event.target);
// 解除事件監聽器
completedStar.removeEventListener(Event.COMPLETE, onStarComplete);
// 從容器中刪除已完成的星星
if (completedStar.parent) {
completedStar.parent.removeChild(completedStar);
}
}
...AS在這裡算是比較冷門的語言
要想得到解答得碰運氣
以下是Google到類似的做法
提供參考
var starsArray:Array = new Array();
var maxStarss:Number = 8;
function addStars(e:Event)
{
Stars: var = new stars Stars();
Stars.x = stage.stageWidth/2;
Stars.y = stage.stageHeight/2;
Stars.Alpha = Math.Random () *.8 +. 2;
stars.scaleX = stars.scaleY = Math.Random () *.8 +. 2;
stars.xMovement = Math.Random () * 10 - 5;
stars.yMovement = Math.Random () * 10 - 5;
starsArray.push (stars);
addChild (stars);
stars.cacheAsBitmap = true;
If (starsArray.length > = maxStarss)
{
removeChild (starsArray.shift ());
}
stars.addEventListener (Event.ENTER_FRAME, moveStars);
}
function moveStars(e:Event)
{
e.currentTarget.x += e.currentTarget.xMovement;
e.currentTarget.y += e.currentTarget.yMovement;
}
var myTimer:Timer = new Timer (50);
myTimer.addEventListener (TimerEvent.TIMER, addStars);
myTimer.start ();
Event.COMPLETE
不會從 MovieClip 主動 dispatchEvent
以往執行專案時會在 MovieClip 最後一格發送這個事件給外部收,
或者是透過 currentFrame === totalFrames 來做什麼事情
在 STAR 的最後一格加入一個關鍵影格,裡面加上
dispatchEvent(new Event(Event.COMPLETE));
就可以了
好的!! 謝謝您~我試試看唷!
謝謝您! angelliya00 果然大師出手就不一樣,我的程式碼也有一些問題,修改過後,達成我要的效果! 謝謝您😁