Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 索引深度动画,AS3_Flash_Actionscript 3 - Fatal编程技术网

Flash 索引深度动画,AS3

Flash 索引深度动画,AS3,flash,actionscript-3,Flash,Actionscript 3,我有三个球。我该怎么办 它们在动画中应该看起来像是在变戏法,但是 我没有正确地索引它们。请帮忙。 谢谢 编辑 也许我应该使用数组。getChildAt可以工作,但它的循环并不完美。它移动一两个球,不是一个接一个 //JUGGLING ANIMATION WITH 3 BALLS var myTimer:Timer = new Timer(444); myTimer.addEventListener(TimerEvent.TIMER,someFunction); myTimer.start();

我有三个球。我该怎么办

它们在动画中应该看起来像是在变戏法,但是 我没有正确地索引它们。请帮忙。
谢谢

编辑
也许我应该使用数组。getChildAt可以工作,但它的循环并不完美。它移动一两个球,不是一个接一个

//JUGGLING ANIMATION WITH 3 BALLS
var myTimer:Timer = new Timer(444);
myTimer.addEventListener(TimerEvent.TIMER,someFunction);
myTimer.start();
function someFunction(event:TimerEvent) {
var T:Number =0; 

//WHERE I'M SETTING IT WRONG
T++; 
T %= 3;
var dr:*;
dr = getChildAt(numChildren - 1);
for(var i:int; i <T; i++){
setChildIndex(dr,i);
trace(i);
}
}
//用3个球玩杂耍动画
var myTimer:Timer=新定时器(444);
myTimer.addEventListener(TimerEvent.TIMER,someFunction);
myTimer.start();
函数someFunction(事件:TimerEvent){
变量T:数值=0;
//我把它设置错了
T++;
T%=3;
var-dr:*;
dr=getChildAt(numChildren-1);
对于(变量i:int;i编辑:

不知道您真正想要实现什么,但在一次调用中只更改一个索引

var depth:Number =0;

var myTimer:Timer = new Timer(444);

myTimer.addEventListener(TimerEvent.TIMER,someFunction);
myTimer.start();

function someFunction(event:TimerEvent):void {
  depth =(depth + 1) % 3;

  var dr:DisplayObject = getChildAt(numChildren - 1);

  setChildIndex(dr, depth);

  trace(depth);
}

您的T值错误,您不能同时递增和执行模运算=>

T = (T + 1) % 3;

在重复函数中,每次都将T重置为0,将其置于函数之外:

var T:Number =0;

var myTimer:Timer = new Timer(444);
myTimer.addEventListener(TimerEvent.TIMER,someFunction);
myTimer.start();

function someFunction(event:TimerEvent):void {
  T =(T + 1) % 3;
  var dr:DisplayObject = getChildAt(numChildren - 1);
  for(var i:int=0; i <T; i++){
    setChildIndex(dr,i);
    trace(i);
  }
}
var T:Number=0;
var myTimer:Timer=新定时器(444);
myTimer.addEventListener(TimerEvent.TIMER,someFunction);
myTimer.start();
函数someFunction(事件:TimerEvent):void{
T=(T+1)%3;
var dr:DisplayObject=getChildAt(numChildren-1);

对于(var i:int=0;i来说,您不太清楚自己想要实现什么。 如果要使用一个计时器设置3个片段的动画,但一次设置1个片段的动画,可以尝试以下操作:

var myTimer:Timer = new Timer(444);
myTimer.addEventListener(TimerEvent.TIMER,someFunction);
myTimer.start();
function someFunction(event:TimerEvent) {
var i:int = (myTimer.currentCount - 1)%3;
var dr:DisplayObject = getChildAt(i);
setChildIndex(dr,i);
trace(i);
}
  • 你在你的函数中声明了T,那么它不会重置为0吗?然后你在多个剪辑中循环,你想同时控制这三个剪辑吗?这还不清楚
  • 您可以使用计时器获取“计时器自零开始以来已触发的总次数”
  • 我知道这是一个示例/片段,但是:someFunction没有说明您要做什么,变量名不一致(例如,t),getChildAt()返回一个DisplayObject,您可以根据使用情况将其强制转换为Sprite/MovieClip,但使用*like并不是该语言的好用法

  • HTH

    它们是舞台“r”“g”“b”上的实例。我正在制作z深度动画。我想将getChildAt发送到堆栈的顶部或后部。很抱歉,这太混乱了。我尝试过,但仍然以相同的方式制作动画。我正在尝试学习循环和索引。
    var myTimer:Timer = new Timer(444);
    myTimer.addEventListener(TimerEvent.TIMER,someFunction);
    myTimer.start();
    function someFunction(event:TimerEvent) {
    var i:int = (myTimer.currentCount - 1)%3;
    var dr:DisplayObject = getChildAt(i);
    setChildIndex(dr,i);
    trace(i);
    }