读x和的问题;在enterframe上的补间对象的y坐标 - AS3

时间:2011-04-15 17:47:52

标签: flash actionscript-3

嗨有人可以解释为什么下面代码中圆圈之间的线条与圆圈的中心不对齐?

圈子的x和y属性似乎与实际位置不一致,但这又如何呢?

import flash.display.Sprite
import fl.transitions.*;
import fl.transitions.easing.*;

var mcs=[];

function go(Y,size,col,opac){
    var mc=new Sprite()
    mc.y=Y
    mc.x=600
    mc.graphics.beginFill(col,opac)
    mc.graphics.drawCircle(0,0,size/3)
    mc.graphics.endFill()
    addChild(mc)
    mcs.push(mc)

    var xPosT = new Tween(mc, "x", Strong.easeOut, 600, 0, 3,true);
}

function upd(e){
    graphics.clear()
    graphics.moveTo(mcs[0].x,mcs[0].y)
    for(var i in mcs){
        graphics.lineStyle(0,0xCCCCCC,1)
        graphics.lineTo(mcs[i].x, mcs[i].y)
    }
}

setInterval(function(){
    go(randomNo(400),randomNo(50,5),0xCCCCCC,1)
},500)

stage.addEventListener(Event.ENTER_FRAME,upd)


//Returns a random number between from and to inclusive
function randomNo(to:Number,from=0,decimalPlaces=0):Number{
    var ret=roundDecimal(Math.random()*(to-from)+from,decimalPlaces)
    return(ret)
}
function roundDecimal(num:Number, precision:int):Number{
    var decimal:Number = Math.pow(10, precision);
    return Math.round(decimal* num) / decimal;
}

1 个答案:

答案 0 :(得分:0)

Easy输入帧事件触发后,补间正在更新 你永远不应该使用enterframe事件来控制这样的UI 完全删除这一行。

stage.addEventListener(Event.ENTER_FRAME,upd)

并在go函数中添加此行。

var xPosT = new Tween(mc, "x", Strong.easeOut, 600, 0, 3,true);
xPosT.addEventListener( TweenEvent.MOTION_CHANGE, upd )

MOTION_CHANGE在补间更新后触发 另请注意,您必须考虑垃圾收集,因为如果此应用程序运行一段时间,则会出现问题