2010-09-29 44 views
1

隨機圓圈我需要使用一個定時器時間來控制動畫,時間繪製每500毫秒發生&在總拉伸20圈。我也需要確保圈子完全被畫在舞臺的極限內。我一直在試圖弄清楚這一點,這讓我發瘋。這是我一直在玩的代碼,我無法弄清楚。請儘快幫助!繪製使用階段邊界內的計時器在動作

進口flash.events.TimerEvent; import flash.utils.Timer;

//創建一個新的百秒定時器,每250毫秒輸出一次 var faster_minuteTimer:Timer = new Timer(250,6);

//指定偵聽器的間隔和完成事件 faster_minuteTimer.addEventListener(TimerEvent.TIMER,onTick); faster_minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE,onTimerComplete);

//啓動)計時器滴答 faster_minuteTimer.start(;

功能onTick(事件:TimerEvent):無效 { //顯示蜱計數到目前爲止 跡( 「計數...」 + event.target.currentCount); } 功能onTimerComplete(事件:TimerEvent):無效 { 跡( 「播放完成。」); } var xCoord,yCoord,radius,Width,Height:uint; //聲明變量

//不使用任何變量的第一個

XCOORD =(的Math.random()* stage.stageWidth); //舞臺上的某處 yCoord =(Math.random()* stage.stageHeight);數學公式(Math.random()* 85,20); //兩個數字

graphics.beginFill之間半徑(的Math.random()* 0XFFFFFF); //隨機顏色 graphics.drawCircle(xCoord,yCoord,radius); //座標x & y,半徑 graphics.endFill(); //結束顏色填充

回答

2
import flash.display.Sprite; 
import flash.events.TimerEvent; 
import flash.utils.Timer; 

var timer:Timer = new Timer(500, 20); 
timer.addEventListener(TimerEvent.TIMER, timerTick); 
timer.start(); 

function timerTick(e:TimerEvent):void { 
    var newCircle:Sprite = new Sprite(); 
    var radius:Number = Math.max(Math.random() * 85, 20); 
    var safeX:Number = ((stage.stageWidth - radius) - radius) * Math.random() + radius; 
    var safeY:Number = ((stage.stageHeight - radius) - radius) * Math.random() + radius; 
    newCircle.graphics.beginFill(Math.random() * 0xFFFFFF, 1); 
    newCircle.graphics.drawCircle(0, 0, radius); 
    newCircle.graphics.endFill(); 
    newCircle.x = safeX; 
    newCircle.y = safeY; 
    stage.addChild(newCircle); 
} 
  1. 設置你的計時器
  2. 創建一個circle Sprite
  3. 生成每個你的問題的參數生成隨機的半徑大小
  4. 確定最大值(stage.stageWidth之間的安全值 - 半徑)和最小值(半徑)
  5. 在圓形精靈中繪製一個圓,使其中心點位於精靈的原點(0,0)
  6. 位置th在其給定的,隨機的安全ē圓座標
  7. 添加圈內舞臺

希望這有助於!

測試和工作:)

編輯:這是2000圓的分佈的樣本圖像:http://grab.by/6C1O

+0

THANK YOU SO MUCH !!!!正是我所需要的 – Jen 2010-09-29 05:08:21

+0

不客氣。如果您能將其標記爲公認的答案,我將非常感激。祝你工作順利! – Aaron 2010-09-29 16:08:33

0

我沒有編譯器方便,但這樣的事情應該接近。

全局變量maxWidth,maxHeight,maxSize決定了適合的最大圓以及它的繪製位置。

drawOne()函數繪製一個隨機半徑的圓。圓的中心被隨機設置爲至少離開舞臺每一側的圓的半徑。

定時器的每個勾號都調用drawOne()。

import flash.events.TimerEvent; 
import flash.utils.Timer; 

// Timer ticks 20 times 500 msec apart 
var circleTimer:Timer = new Timer(500, 20); 

// designates listeners for the interval and completion events 
circleTimer.addEventListener(TimerEvent.TIMER, onTick); 
circleTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete); 

// starts the timer ticking 
circleTimer.start(); 

function onTick(event:TimerEvent):void 
{ 
    trace("Count... " + event.target.currentCount); 
    drawOne(); 
} 

function onTimerComplete(event:TimerEvent):void 
{ 
    trace("Play Done."); 
} 

// globals for size of stage, circles 
var maxWidth:uint = stage.stageWidth; 
var maxHeight:uint = stage.stageHeight; 
var maxSize:uint = Math.min(maxWidth, maxHeight); 
var minSize:uint = Math.min(20, Math.floor(maxSize/2)); 

function drawOne():void 
{ 
// to fit box, radius must be 1/2 shortest side or less 
    var radius:uint = Math.max(Math.floor(Math.random() * maxSize/2), minSize); 
// center circle at least radius from any side 
    var xCoord:uint = Math.random()*(maxWidth - 2*radius) + radius; 
    var yCoord:uint = Math.random()*(maxHeight - 2*radius) + radius; 

    graphics.beginFill(Math.random() * 0xffffff); // random color 
    graphics.drawCircle(xCoord,yCoord,radius); 
    graphics.endFill(); 
} 

希望這有助於...