Actionscript Animation????
±¾ÎÄ×÷Õß:egoldy
ÎÄÕ³ö´¦:δ֪
ÎÄÕÂÐÔÖÊ:??
ÔĶÁ´ÎÊý:39909
·¢²¼Ê±¼ä:2005-05-15
??????????keith peters???making things move???????????????????????????????webstudio?????????????

Actionscript animation????

??????bit-101.com?????????making things move????????????????????????????????????????????????????????????????????????making things move…????????????keith peters???????????????????????????????????????????????????????????????????????????????????????????????????

1???

????????????????????????????????FALSH?????????????????????????????????????????????????????????????????????????????????????????????????onEnterFrame??????setInterval,???????????????????????????????????????

?x???????????vx,????????????????????
???
???
´úÂë:

vx=5;
onEnterFrame=function(){
my_mc._x+=vx;//??????my_mc._x=my_mc._x+vx;
}

??:a0001.swf

????MC????5????????????????????vx???????

???????????????????????????????y??????????
´úÂë:

vy=5;
onEnterFrame=function(){
my_mc._y+=vy;//??????my_mc._y=my_mc._y+vy;
}

????????????????????????????

????????????????????????????x??y????????????????????????????????????????????????????????????

???
´úÂë:

vx=5;
vy=5;
onEnterFrame=function(){
my_mc._x+=vx;
my_mc._y+=vy;
}

???a0002.swf


?????????x,y???????????????????J?????vx,vy??5????????????45????????vx,vy?????????????????????????????????vx,vy??????

???????????????????????????????????????vx,vy????????45???????????????????????????????????????????????????????????????????????????????????????
?1?    ?????=??*PI/180;
?2?    ?????=??*180/PI?
?????????????????????????????????????????????????????????????????????????????x?y ??????????vx,vy??????speed;
???x??????????vx=Math.cos(radians)*speed;?y???????vy=Math.sin(radians)*speed;

???
´úÂë:

speed=10;
angle=15;
radians=angle*Math.PI/180;
onEnterFrame=function(){
vx=Math.cos(radians)*speed;
vy=Math.sin(radians)*speed;
my_mc._x+=vx;
my_mc._y+=vy;
}

???a0003.swf

???????????????15??????????angle???????????????????????????

2????
???????????????????????????????????????????????vt=vo+at?FLASH?????????????????????????????????????????????????????????ax,???x????????vx=vx+ax,???vx+=ax;????????0;

???
´úÂë:

ax=0.2;
vx=0;
onEnterframe=function(){
vx+=ax;
my_mc._x+=vx;
}

???a0004.swf


??????????????????????????????????????????????????????????????y????????
???
´úÂë:

ax=0.2;
ay=0.1;
vx=0;
vy=0;
onEnterFrame=function(){
vx+=ax;
vy+=ay;
my_mc._x+=vx;
my_mc._y+=vy;
}

???a0005.swf


??????????????????????????????????????????????????????????????????????????????????????

3???

????????????????????????y?????????????grav,??????????
???
´úÂë:

grav=0.5
vy=0;
onEnterFrame=function(){
vy+=garv;
my_mc._y+=vy;
}

???a0006.swf


4.??

??????????????????????????FLASH???????????????????????????????????????????????????????????????????????x??????vx*=-1;??????????????vx=-vx;

???
´úÂë:

//????
top=0;
left=0;
right=400;
bottom=300;
vx=10;
vy=10;
onEnterFram=function(){
my_mc._x+=vx;
my_mc._y+=vy;
//??????????????????????????????????????
if(my_mc._x+my_mc._width/2>right){
  my_mc._x=right-my_mc._width/2;
  vx*=-1;
}
if(my_mc._x-my_mc._width/2<left){
my_mc._x=left+mc_mc._width/2;
vx*=-1;
}
if(my_mc._y-my_mc._height/2<top){
my_mc._y=top+my_mc._height/2;
vy*=-1;
}
if(my_mc._y+my_mc._height/2>bottom){
my_mc._y=bottom-my_mc._height/2;
vy*=-1;
}
}

???a0007.swf


??????????????????????
*?????????my_mc._x,my_mc._y??????my_mc?????????my_mc????????????????????????????????my_mc??????????

????????

???????????????????????????????vx*=-1;??????????????????????????????????????????????????????????????????????1??????????????????????1???????????????????????vx*=-0.8;?????????????????????????

???
´úÂë:

top=0;
left=0;
right=400;
bottom=300;
//?????????garv
garv=.5;
vx = 10;
vy = 10;
onEnterFrame = function () {
//y???????
    vy+=garv;
    my_mc._x += vx;
    my_mc._y += vy;
    if(my_mc._x+my_mc._width/2>right){
        my_mc._x=right-my_mc._width/2;
        vx*=-0.8;
    }
    if(my_mc._x-my_mc._width/2<left){
        my_mc._x=left+my_mc._width/2;
        vx*=-0.8;
    }
    if(my_mc._y-my_mc._height/2<top){
        my_mc._y=top+my_mc._height/2;
        vy*=-0.8;
    }
    if(my_mc._y+my_mc._height/2>bottom){
        my_mc._y=bottom-my_mc._height/2;
        vy*=-0.8;
    }
};

???a0008.swf


5.???

??????????????????????????????????1,????????????????????????????
???
´úÂë:

fraction=0.95;
vx=10;
vy=10;
onEnterFrame=function(){
vx*=fraction;
vy*=fraction;
my_mc._x+=vx;
my_mc._y+=vy;
}

???a0009.swf


6?????

   ???????????????????????????????????????????????????????????????????????????????????????
   ???????????startDrag(),???????????????????????????????????stopDrag(),????????????????

???
´úÂë:

top=0;
left=0;
right=400;
bottom=300;
garv=.5;
vx = 10;
vy = 10;
onEnterFrame = function () {
//??????????????????????????
    if(!dragging){
    vy+=garv;
    my_mc._x += vx;
    my_mc._y += vy;
    if(my_mc._x+my_mc._width/2>right){
        my_mc._x=right-my_mc._width/2;
        vx*=-0.8;
    }
    if(my_mc._x-my_mc._width/2<left){
        my_mc._x=left+my_mc._width/2;
        vx*=-0.8;
    }
    if(my_mc._y-my_mc._height/2<top){
        my_mc._y=top+my_mc._height/2;
        vy*=-0.8;
    }
    if(my_mc._y+my_mc._height/2>bottom){
        my_mc._y=bottom-my_mc._height/2;
        vy*=-0.8;
    }
//????????????????????????my_mc??????my_mc???????????????
    }else{
        vx=my_mc._x-oldx;
        vy=my_mc._y-oldy;
        oldx=my_mc._x;
        oldy=my_mc._y;
    }
            
};
my_mc.onPress=function(){
    this.startDrag();
    dragging=true;
}
my_mc.onRelease=function(){
    this.stopDrag();
    dragging=false;
}

???a0010.swf


7.easing??
                          
???easing??????????????????????????????easing.????????easing???????www.robertpenner.com????????????????????????mm???transition???tween??

???
´úÂë:

targetx = 200;
targety = 150;
onEnterFrame = function () {
    dx=targetx-my_mc._x;
    dy=targety-my_mc._y;
    my_mc._x+=dx*.3;
    my_mc._y+=dy*.3;
    
};

???a0011.swf


8?Spring??

spring?????easing???????easing?cool????????????????????????????????????????????????

???
´úÂë:

var targetx = 200;
var targety = 150;
fraction = .9;
vx = 0;
vy = 0;
onEnterFrame = function () {
    if (!dragging) {
        //???????????
        dx = targetx-my_mc._x;
        dy = targety-my_mc._y;
       //???
        vx += dx*.3;
        vy += dy*.3;
       //????
        vx *= fraction;
        vy *= fraction;
        my_mc._x += vx;
        my_mc._y += vy;
    }
};
my_mc.onPress = function() {
    this.startDrag();
    dragging = true;
};
my_mc.onRelease=function() {
    this.stopDrag();
    dragging = false;
};

???a0012.swf


spring ?????

??????spring ??????????????????????????????????drawing api?????????????
???
´úÂë:

var targetx = 200;
var targety = 150;
fraction = .9;
vx = 0;
vy = 0;
onEnterFrame = function () {
    dx = _xmouse-my_mc._x;
    dy = _ymouse-my_mc._y;
    vx += dx*.3;
    vy += dy*.3;
    vx *= fraction;
    vy *= fraction;
    my_mc._x += vx;
    my_mc._y += vy;
    //???mouse??
    clear();
    lineStyle(1,0,100);
    moveTo(_xmouse,_ymouse);
    lineTo(my_mc._x,my_mc._y);
};

???a0013.swf


?????????????????????????????????????????????

Spring ?

??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????J
???
´úÂë:

fraction = .7;
grav=20;
my_mc.vx = 0;
my_mc.vy = 0;
my_mc1.vx = 0;
my_mc1.vy = 0;
my_mc2.vx = 0;
my_mc2.vy = 0;
onEnterFrame = function () {
    clear();
    lineStyle(1, 0, 100);
    moveTo(_xmouse, _ymouse);
    spring(my_mc, _xmouse, _ymouse);
    spring(my_mc1, my_mc._x, my_mc._y);
    spring(my_mc2, my_mc1._x, my_mc1._y);
};
function spring(mc, x, y) {
    dx = x-mc._x;
    dy = y-mc._y;
    mc.vx += dx*.3;
    mc.vy += dy*.3;
    mc.vy += grav;
    mc.vx *= fraction;
    mc.vy *= fraction;
    mc._x += mc.vx;
    mc._y += mc.vy;
    lineTo(mc._x, mc._y);
}

???a0014.swf



?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????keith peters??????????????????????????????????????????????????????keith peters???bit-101.com.?????keith peters???making things move…????desinger??????????

---????????????????????????????????google???????????????????????????---

?????







   
 
Copyright (C) 2004 websudio Team All Rights Reserved.