减速和停止在Flash AS3的影片剪辑?

我需要慢下来,然后停止影片剪辑动画usig AS3。 经济放缓将通过点击停止按钮来触发。

任何人都知道这一个很好的技术? 我不能使用渐变引擎这种效果,因为它是一个学校项目,否认类型库。

--------------解决方案-------------

您可以降低帧率:

stage.frameRate = N;

但是考虑到,这会降低整个您的SWF的帧率。

您可以控制​​的,而不是让它自由发挥的影片剪辑。

这里有一个类,你可以使用

package
{
import flash.display.MovieClip;
import flash.events.Event;

public class MovieClipController
{
private var _mc:MovieClip;
private var _playing:Boolean;
private var _speed:Number;
private var _currentFrame:Number;

public function MovieClipController( mc:MovieClip )
{
_mc = mc;
_mc.stop();
_currentFrame = _mc.currentFrame;
}

public function play( speed:Number = 1 ):void
{
if(!_playing) _mc.addEventListener(Event.ENTER_FRAME, handleEnterFrame );
_playing = true;
_speed = speed;
}

public function stop():void
{
if(_playing) _mc.removeEventListener(Event.ENTER_FRAME, handleEnterFrame );
_playing = false;
_mc.stop();
}

public function get speed():Number
{
return _speed;
}

private function handleEnterFrame(e:Event):void
{
if (_playing)
{
_currentFrame += _speed;
_mc.gotoAndStop( Math.round(_currentFrame % _mc.totalFrames) );
}
}

}

}

使用方法(假设myAnimation已添加到舞台):

var myController:MovieCLipController = new MovieClipController( myAnimation );

...

myController.play(1.00); // plays animation at 100% speed

...

myController.play(0.50); // plays animation at 50% speed

...

myController.play(0.10); // plays animation at 10% speed, etc

...

myController.play( myController.speed * 0.90 ); // decrease speed by 10 percent.

...

myController.play( myController.speed - 0.10); // decrease speed by 10 percentage points

解决这个最简单,最合理的方式是有一个velocity属性,它可以减少。 下面是可能包含这样的属性的类:

package
{
import flash.display.MovieClip;
import flash.events.Event;

public class PhysicsMovieClip extends MovieClip
{
// Properties
private var _velocity:Number = 0;
private var _angle:Number = 0;
public var velocityTarget:Number = 0;

/**
* Constructor
*/
public function PhysicsMovieClip()
{
addEventListener(Event.ENTER_FRAME, _handle);
}

/**
* ...
* @param e Event.ENTER_FRAME
*/
private function _handle(e:Event):void
{
_velocity -= (_velocity - velocityTarget) / 10;

x += Math.cos(_angle) * _velocity;
y += Math.sin(_angle) * _velocity;
}

/**
* Getters & Setters
*/
public function get angle():Number{ return _angle * 180 / Math.PI; }
public function set angle(value:Number):void
{
_angle = value / 180 * Math.PI;
}
}
}

上述会让你改变velocityTarget属性,它会减慢或加快你的对象。

例:

var mc:PhysicsMovieClip = new PhysicsMovieClip(); // assign graphics somewhere
addChild(mc);

mc.velocityTarget = 10; // the MovieClip will speed up

您可以通过设置来改变运动的方向angle上面,像这样性质:

mc.angle = 90; // movement is now directly south
mc.angle = 270 // movement is now directly north

(0度直接向东闪光灯)

分类: 时间:2015-03-15 人气:3
本文关键词: 动作3,闪光
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.410 (s). 10 q(s)