手机
当前位置:查字典教程网 >网页设计 >Flash教程 >Flash AS3代码打造绚烂的星形变幻效果
Flash AS3代码打造绚烂的星形变幻效果
摘要:这篇教程主要向大家讲解如何利用FlashAS3代码打造绚烂的星形变幻效果,教程并没有对每一个代码做出讲解,但也不是很难,分享到查字典教程网,...

这篇教程主要向大家讲解如何利用Flash AS3代码打造绚烂的星形变幻效果,教程并没有对每一个代码做出讲解,但也不是很难,分享到查字典教程网,喜欢的朋友一起来学习吧!

复制代码代码如下:package

{

import flash.display.Sprite;

import flash.events.Event;

import flash.events.MouseEvent;

[SWF(backgroundColor = "0x000000", frameRate = "60")]

public class Main extends Sprite

{

private var patternList:Array = new Array();

private var moveBullet:Array = new Array();

public function Main():void

{

if (stage) init();

else addEventListener(Event.ADDED_TO_STAGE, init);

}

private function init(e:Event = null):void

{

removeEventListener(Event.ADDED_TO_STAGE, init);

// entry point

MouseDown(null);

addEventListener(Event.ENTER_FRAME, EnterFrame );

stage.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown);

}

private function EnterFrame(event:Event):void

{

var i:int = 0;

for ( i = 0; i < patternList.length; i++ )

{

var bullet:Bullet = patternList[i].Run();

if ( bullet != null )

{

addChild( bullet );

}

}

for ( i = patternList.length - 1; i >= 0; i-- )

{

if ( patternList[i].isEnd() )

{

// 从待命到移动

for ( var j:int = 0; j < patternList[i].waitBullet.length; j++ )

{

patternList[i].waitBullet[j].StartSlide();

moveBullet.push( patternList[i].waitBullet[j] );

}

patternList.splice( i, 1 );

}

}

// 移动

if ( moveBullet.length > 0 )

{

for ( i = moveBullet.length - 1; i >= 0; i-- )

{

//

if ( moveBullet[i].slideFlag )

{

moveBullet[i]._xx += Math.cos( moveBullet[i].slideAngle * Math.PI / 180 ) * moveBullet[i].slideSpeed;

moveBullet[i]._xy += Math.sin( moveBullet[i].slideAngle * Math.PI / 180 ) * moveBullet[i].slideSpeed;

moveBullet[i].x = moveBullet[i]._xx;

moveBullet[i].y = moveBullet[i]._xy;

if ( moveBullet[i].slideSpeed > 0 )

{

moveBullet[i].slideSpeed -= moveBullet[i].slideSpeedMax / 50;

if ( moveBullet[i].slideSpeed < 0 ) moveBullet[i].slideFlag = false;

}

}else

{

moveBullet[i]._xx += Math.cos( moveBullet[i].moveAngle * Math.PI / 180 ) * 1;

moveBullet[i]._xy += Math.sin( moveBullet[i].moveAngle * Math.PI / 180 ) * 1;

moveBullet[i].x = moveBullet[i]._xx;

moveBullet[i].y = moveBullet[i]._xy;

if ( moveBullet[i].x < -50 || moveBullet[i].x > stage.stageWidth + 50 || moveBullet[i].y < -50 || moveBullet[i].y > stage.stageHeight + 50 )

{

removeChild( moveBullet[i] );

moveBullet.splice( i, 1 );

}

}

}

}

}

private function MouseDown(event:MouseEvent):void

{

// 小星

patternList.push( new Pattern(stage.stageWidth / 2, stage.stageHeight / 2, false, 50, 0xFF5555, (270 + 72 * 0), 3 ) );

patternList.push( new Pattern(stage.stageWidth / 2, stage.stageHeight / 2, false, 50, 0xFF5555, (270 + 72 * 1), 3 ) );

patternList.push( new Pattern(stage.stageWidth / 2, stage.stageHeight / 2, false, 50, 0xFF5555, (270 + 72 * 2), 3 ) );

patternList.push( new Pattern(stage.stageWidth / 2, stage.stageHeight / 2, false, 50, 0xFF5555, (270 + 72 * 3), 3 ) );

patternList.push( new Pattern(stage.stageWidth / 2, stage.stageHeight / 2, false, 50, 0xFF5555, (270 + 72 * 4), 3 ) );

// 大星

patternList.push( new Pattern(stage.stageWidth/2, stage.stageHeight/2, false, 100, 0x5555FF, (270 + 72 * 0), 5 ) );

patternList.push( new Pattern(stage.stageWidth/2, stage.stageHeight/2, false, 100, 0x5555FF, (270 + 72 * 1), 5 ) );

patternList.push( new Pattern(stage.stageWidth/2, stage.stageHeight/2, false, 100, 0x5555FF, (270 + 72 * 2), 5 ) );

patternList.push( new Pattern(stage.stageWidth/2, stage.stageHeight/2, false, 100, 0x5555FF, (270 + 72 * 3), 5 ) );

patternList.push( new Pattern(stage.stageWidth/2, stage.stageHeight/2, false, 100, 0x5555FF, (270 + 72 * 4), 5 ) );

}

}

}

//////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////

import flash.display.Sprite;

import flash.geom.Point;

//-----------------------------

// 图案类

class Pattern {

private var reverse:Boolean = false;

private var starSize:Number = 150;

private var bulletColor:uint = 0x000000;

private var slideAngle:Number = 0;

private var slideSpeed:Number = 0;

private var end:Boolean = false;

private var count:int = 0;

private var defX:int = 0;

private var defY:int = 0;

private var target:Array = new Array();

private static const PATH_OBJ_NUM:int = 20; // 子弹数

private static const TARGET_NUM:int = 5;

private static const TARGET_ANGLE:Array = [ 270 + 72 * 3, 270 + 72 * 1, 270 + 72 * 4, 270 + 72 * 2, 270 ]; // 通过的目标地点的角度

private static const TARGET_ANGLE2:Array = [ 270 + 72 * 2, 270 + 72 * 4, 270 + 72 * 1, 270 + 72 * 3, 270 ]; //

public var waitBullet:Array = new Array();

public function Pattern(

_gx:int = 0, _gy:int = 0,

_rev:Boolean = false,

_starSize:Number = 80,

_bulletColor:uint = 0x000000,

_slideAngle:Number = 0,

_slideSpeed:Number = 0

) {

count = 0;

defX = _gx;

defY = _gy;

reverse = _rev;

starSize = _starSize;

bulletColor = _bulletColor;

slideAngle = _slideAngle;

slideSpeed = _slideSpeed;

for ( var i:int = 0; i < 5; i++ )

{

var angle:Number = TARGET_ANGLE[i];

if ( reverse ) angle = TARGET_ANGLE2[i] + 180; // 反転

else angle = TARGET_ANGLE[i];

target[i] = new Point( Math.cos( angle * Math.PI / 180 ) * starSize, Math.sin( angle * Math.PI / 180 ) * starSize );

}

}

//子弹生成

public function Run() : Bullet {

var bullet:Bullet = new Bullet(bulletColor,slideAngle,slideSpeed);

var targetNo:int = int(count / PATH_OBJ_NUM);

var targetRate:int = int(count % PATH_OBJ_NUM);

var p:Point;

//子弹的座标

p = Point.interpolate( target[targetNo], target[(targetNo+(TARGET_NUM-1))%TARGET_NUM], targetRate / PATH_OBJ_NUM );

bullet.x = p.x + defX;

bullet.y = p.y + defY;

bullet._xx = p.x + defX;

bullet._xy = p.y + defY;

//子弹的移动角度

//if( !reverse ) bullet.moveAngle = -count / PATH_OBJ_NUM / TARGET_NUM * 720 + 135;

//else bullet.moveAngle = count / PATH_OBJ_NUM / TARGET_NUM * 720 - 135;

bullet.moveAngle = ( -int(count / PATH_OBJ_NUM) / TARGET_NUM * 720 + 108) + ((count % PATH_OBJ_NUM) * 180 / PATH_OBJ_NUM); // Target始点角度 + 180 * rate グレイソーに入る前の奴

waitBullet.push( bullet );

count++;

if ( count == TARGET_NUM * PATH_OBJ_NUM ) end = true;

return bullet;

}

public function isEnd() : Boolean { return end; }

}

//-----------------------------

// 子弹类

class Bullet extends Sprite {

public var slideFlag:Boolean = false;

public var slideAngle:Number = 0;

public var slideSpeed:Number = 0;

public var slideSpeedMax:Number = 0;

public var moveAngle:Number = 0;

public var _xx:Number = 0;

public var _xy:Number = 0;

public function Bullet(color:uint,_slideAngle:Number = 0,_slideSpeed:Number = 50) {

super();

graphics.beginFill(color);

graphics.drawCircle(0, 0, 5);

graphics.endFill();

graphics.beginFill(0xFFFFFF, 0.5);

graphics.drawCircle(0, 0, 3);

graphics.endFill();

slideAngle = _slideAngle;

slideSpeed = _slideSpeed;

slideSpeedMax = _slideSpeed;

slideFlag = false;

}

public function StartSlide():void

{

slideFlag = true;

}

}

以上就是Flash AS3代码打造绚烂的星形变幻效果的方法介绍,希望能帮到大家,谢谢阅读!

【Flash AS3代码打造绚烂的星形变幻效果】相关文章:

Flash cs3仿真艺术系列教程:渐变填充实现写实效果

flash实例-打造鼠标触发火焰特效

利用Flash中的遮照打造3D动画视觉效果

Flash AS3.0教程:载入库中的影片剪辑制作成动画效果

flash AS打造图片滚动效果

Flash制作动态放大镜画面效果

Flash制作字母变换效果

Flash制作超酷的火焰文字GIF动画效果

Flash CS3打造光圈变换效果

Flash AS2实例 跳动的小球动画效果

精品推荐
分类导航