主题:  有人看过画魔等人编的<<深入FLASH5编程>>吗?

seast_5d

职务:普通成员
等级:1
金币:0.0
发贴:81
#12002/6/29 15:04:45
有人看过画魔等人编的<<深入FLASH5编程>>吗?我在学习第一个实例----"密室中反弹的小球"时遇到一点问题不明白,请各位帮忙.
第一关键帧:
movex=10;
movey=10;
第二关键帧:
x = getProperty(ball, _x);

y = getProperty(ball, _y);

if (Number(x)>=540){
    movex=-(movex);
    ball.play();
}else if (Number(x)<=10){
    movex=-(movex);
    tellTarget(ball){
        play();
    }
}
if (Number(y)>=390){
    movey=-(movey);
    ball.play();
}else if (Number(y)<=10){
    movey=-(movey);
    tellTarget(ball){
        play();
    }
}
第三关键帧:
setProperty(ball,_x,Number(x)+movex);
setProperty(ball,_y,Number(y)+movey);
gotoAndPlay(2);

我认为这些代码不能实现书里说的效果,可是事实确实现了书里的效果.这是为什么那?
我认为不能实现的原因:第二关键帧里的as确定了第二帧里ball的位置.第三关键帧里的as设置的是第三帧里ball的位置,"按理(我的理)"ball不会一直走阿,(只能走10px,然后倒回原位置).这是为什么那?请各位指点.谢谢!


non

onlybecause

职务:普通成员
等级:1
金币:0.0
发贴:87
#22002/6/29 21:47:34
关键在于3桢的goto语句,这样不断循环,就会不断变化,所以会移动,其实在后面的实例关于重力小球速度的控制我觉得有点不好理解,那个算法很有用,我想了很长时间也没有想透,我到是希望有人能讲一讲



ejoker

职务:普通成员
等级:1
金币:0.0
发贴:129
#32002/6/30 16:50:50
我想你是没有搞懂getProperty的意思。
x = getProperty(ball, _x)把目前小球_X轴位置的数值赋给X,它是会变化的。



第二关键帧:
x = getProperty(ball, _x);
y = getProperty(ball, _y);
……

第三关键帧:
setProperty(ball,_x,Number(x)+movex);
setProperty(ball,_y,Number(y)+movey);
gotoAndPlay(2);



seast_5d

职务:普通成员
等级:1
金币:0.0
发贴:81
#42002/7/1 21:25:43
谢谢
可是,我set第三个关键帧的ball位置改变啊,第三个关键帧的ball没有让他动.


non

haichuanqin

职务:普通成员
等级:1
金币:0.0
发贴:3
#52002/7/1 22:58:58
有没有人有After的实例教材或实例教材的网址?能上传或告诉一下吗?



-=胡子=-

职务:普通成员
等级:1
金币:0.0
发贴:200
#62002/7/2 14:35:39
movex是个动态值啊!!!!!!!!!!!!!



总在掺和

职务:普通成员
等级:1
金币:0.0
发贴:1
#72002/7/3 13:10:00
谁把这个深入给俺看看先



-=胡子=-

职务:普通成员
等级:1
金币:0.0
发贴:200
#82002/7/3 15:14:30
我试着解释以下:
第三关键帧:
movex=10;//设定移动的单位长度
movey=10;//设定移动的单位长度
第二关键帧:
x = getProperty(ball, _x);//取得“ball”的新的x坐标值赋给变量x
y = getProperty(ball, _y);//取得“ball”的新的y坐标值赋给变量y

if (Number(x)>=540){
movex=-(movex);
ball.play();
}else if (Number(x)<=10){
movex=-(movex);
tellTarget(ball){
play();
}
}
if (Number(y)>=390){
movey=-(movey);
ball.play();
}else if (Number(y)<=10){
movey=-(movey);
tellTarget(ball){
play();
}
}
//if语句判断ball是否出去了区域,如果是出去了,则ball播放并且把移动的方向倒过来
第三关键帧:
setProperty(ball,_x,Number(x)+movex);
setProperty(ball,_y,Number(y)+movey);
gotoAndPlay(2);
//设定ball的坐标在原来的基础上移动单位长度的像素,返回到第二帧执行(循环执行地二、三帧);
则ball就回不断的往前走了啊



seast_5d

职务:普通成员
等级:1
金币:0.0
发贴:81
#92002/7/3 23:24:24
大家都人为很自然的就实现了啊:(
时间轴上的处在两个关键帧里的同名mc实体有关系吗?


non