我希望我的动画每次前进120像素。相反,我的动画回到底部,而不是从它的新位置前进。它有一个新的位置,但总是先回到底部。如何使我的动画每次都从它当前的位置前进?
目标
我希望我的动画前进120像素从目前的新位置,并重复十后。
问题
动画每一次都会重置到底部,然后再前进。我不知道,如果这是一个推特问题,我如何设置我的循环,或其他无关的东西。如果您能给我一个如何修改这段代码的例子,我将不胜感激。
alt文本http://www.ashcraftband.com/myspace/videodnd/tweener.jpg
NumbersView.as‘代码工作,但方式混乱,正如所描述的’
package
{
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.utils.Dictionary;
import flash.events.Event;
import caurina.transitions.Tweener;
public class NumbersView extends MovieClip
{
private var _listItems:Array;
private var previousNums:Array;
private const numHeight:int = 120;
public function NumbersView()
{
_listItems = new Array();
previousNums = new Array();
//Tweener.init();
var item:NumberImage;
for (var i:Number = 0; i < 9; i++) {
item = new NumberImage();
addChild(item);
item.x = i * item.width;
_listItems.push(item);
}
}
public function setTime($number:String):void {
var nums:Array = $number.split("");
//trace("$number = " + $number);
for (var i:Number = 0; i < nums.length; i++) {
if (nums[i] == previousNums[i]) continue;
Tweener.removeTweens(_listItems[i]);
//newY:int = -numHeight;
var newY:int = int(nums[i]) * -numHeight;
trace("newY = " + newY);
trace("currY = " + _listItems[i].y);
if (_listItems[i].y < 0) _listItems[i].y = numHeight;
Tweener.addTween(_listItems[i], { y:newY, time:3 } );
}
previousNums = nums;
}
}
} .jpg
Tweener http://hosted.zeh.com.br/tweener/docs/en-us/
发布于 2010-03-17 16:15:02
我可以得到你的代码来动画项目,我看到每当这些项目在它们的位置上重新启动时,下面是我更改的内容,让它们从它们目前的位置上移动:
原件:
if (_listItems[i].y < 0) _listItems[i].y = numHeight;
Tweener.addTween(_listItems[i], { y:newY, time:3 } ); 改为:
//if (_listItems[i].y < 0) _listItems[i].y = numHeight; //get rid of this line
Tweener.addTween(_listItems[i], { y:_listItems[i].y+newY, time:3 } ); 对于这个循环部分,您可以使用计时器,下面是我为您提供的示例。它可能并不完美,但希望能给你一个关于你希望它做什么的想法:
package
{
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.utils.Dictionary;
import flash.events.Event;
import flash.events.TimerEvent;
import caurina.transitions.Tweener;
import flash.utils.Timer;
public class NumbersView extends MovieClip
{
private var _listItems:Array;
private var previousNums:Array;
private const numHeight:int = 120;
var t:Timer;
public function NumbersView()
{
_listItems = new Array();
previousNums = new Array();
//Tweener.init();
var item:NumberImage;
for (var i:Number = 0; i < 9; i++) {
item = new NumberImage();
addChild(item);
item.x = i * item.width;
_listItems.push(item);
}
t = new Timer( 1000 ) //1000ms = 1 second intervals
t.addEventListener(TimerEvent.TIMER, onTimer);
t.start();
}
public function onTimer( e:TimerEvent):void {
//this will run every 10th time firing
if( t.currentCount % 10 == 0 ) {
//do something to reset the listItems
for (var i:Number = 0; i < _listItems.length; i++) {
_listItems[i].y = numHeight;
}
}
//do your setTime function, I just randomly called it with random numbers
setTime(Math.round(Math.random()*234567).toString());
}
public function setTime(number:String):void {
var nums:Array = number.split("");
trace("$number = " + number);
for (var i:Number = 0; i < nums.length; i++) {
if (nums[i] == previousNums[i]) continue;
Tweener.removeTweens(_listItems[i]);
//newY:int = -numHeight;
var newY:int = int(nums[i]) * -numHeight;
trace("newY = " + newY);
trace("currY = " + _listItems[i].y);
Tweener.addTween(_listItems[i], { y:_listItems[i].y+newY, time:3 } );
}
previousNums = nums;
}
}
}https://stackoverflow.com/questions/2463667
复制相似问题