Здравствуйте подскажите пожалуйста как заставить работать эти классы в Flash IDE? В итоге должен получиться снегопад. Посмотрите пожалуйста исходник. За ранее благодарен.
Код AS3:
package {
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.utils.Timer;
[SWF(width='800', height='600', backgroundColor='#000000', frameRate='30')]
public class Snow extends Sprite {
private var timer:Timer;
public function Snow()
{
addChild(new Rect(800, 600, 0, 0, 0x000000));
timer = new Timer(50);
timer.addEventListener(TimerEvent.TIMER, onTick);
timer.start();
}
private function onTick(evt:TimerEvent):void
{
var thisSnow:Snowflake = new Snowflake(0.02, -0.1, 0.3, [new Rect(10, 10, -Math.random() * 100, -Math.random() * 100, 0xDDDDFF)]);
addChild(thisSnow);
thisSnow.x = Math.random() * 800;
thisSnow.y = -20;
}
}
}
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.filters.BlurFilter;
import flash.utils.Timer;
internal class Snowflake extends Sprite {
public var speedX:int = 5;
public var speedY:int = 5;
public var speedRotation:int = 5;
private var sprite:*;
private var timer:Timer = new Timer(1);
private var gravity:Number = 1;
private var wind:Number = 1;
private var scale:Number = 1;
private var speed:Number = 1;
private var step:uint = 1;
public function Snowflake(gravity:Number = 1,wind:Number = 1,speed:Number = 1,snows:Array = null):void
{
this.gravity = gravity;
this.wind = wind;
this.speed = speed;
if(snows == null)
{
sprite = new Rect(10, 10);
}
else
{
var snowID:uint = uint(Math.random() * snows.length);
sprite = snows[snowID];
}
addChild(sprite);
timer.addEventListener(TimerEvent.TIMER, onTick);
timer.start();
randoms();
}
private function randoms():void
{
speedX = (Math.random() - Math.random()) * 5;
speedY = Math.random() * 5 + 1;
speedRotation = (Math.random() - Math.random()) * 20;
scale = Math.random();
if(scale < 0.5) scale = 0.5;
sprite.scaleX = scale;
sprite.scaleY = scale;
sprite.alpha = 0.7 - scale / 1.5;
var blur:BlurFilter = new BlurFilter(scale * 4, scale * 4, 1);
sprite.filters = [blur];
}
private function onTick(evt:TimerEvent):void
{
step++;
sprite.x += speedX + wind * step * sprite.scaleX * speed;
sprite.y += speedY + gravity * step * sprite.scaleY * speed;
sprite.rotation += speedRotation * speed;
if(sprite.y > 1000)
{
parent.removeChild(this);
timer.stop();
timer = null;
}
}
}
internal class Rect extends Shape {
public function Rect(width:Number, height:Number,x:Number = 0,y:Number = 0,color:uint = 0x0)
{
this.graphics.beginFill(color);
this.graphics.drawRect(x, y, width, height);
}
}