最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Flash中对小数坐标处理
时间:2009-04-02 编辑:简简单单 来源:一聚教程网
在计算机语言中,速度即位移增量。ActoinScript的写法则是:
fuckCERNET.x += fuckCERNET.vx; //fuckCERNET is an instance of some dynamic class当fuckCERNET.vx < 1/20时,Flash则不再渲染。这是根据FlashPlayer万恶的内部机制来实现的。根据我和一些美帝国主义的Flasher讨论,发现,FlashPlayer对物体x、y属性是有保护的:
Implementation
public function get x():Number
public function set x(value:Number):void为什么要有这个保护呢,也不难理解:肯定是因为你直接让一个物体移动到0.001的位置上后计算机(FlashPlayer)不知道怎么去显示它:计算机是根据像素组成的,例如我们通常所说的1024×768:即便你的影片再高清再无码,你放到80×60的显示器上还是只能显示4800个点。
虽然“万恶”,但不得不承认FlashPlayer很聪明地回避了这样的问题,甚至,很优雅地通过一个setter来解决了问题,我们可以想象这个setter可能会是:
public function set x(value:Number):void {
if (value < 0.05) value = 0;
// blah .. blah
}好的,知道这个之后,就好办了。每次速度改变(即碰撞的时候)做一次“最低值判断”:当速度标量(即不考虑方向)不为0(实际上这种情况很小)但小于0.05时,让速度等于0.05就好,可以用我写的这个函数来修正:
private function fixDecimalFractionPosition(value:Number):Number {
if (Math.abs(value) < .05) {
return (value > 0) ? .05 : -.05;
}
return value;
}
-
上一个: as 3.0 与 as2.0通信方法
-
下一个: flash as 闪动菜单代码
相关文章
- flash SWF体积过大处理方法 05-25
- FLASH软件帧编辑功能怎么使用 06-22
- FLASH软件常用上色工具怎么使用 06-19
- flash怎么制作遮罩图片切换动画 06-19
- FLASH制作春意盎然花园效果 06-18
- 利用ae制作碎片文字动画 06-15