1. 通过一个随机数来控制某个文字的显示与隐藏。可以采用下面的一个随机数来实现:
if(showPressEnter == true)
{
if((random.nextInt(5) + 1) % 5 == 0)
showPressEnter = false;
}
else
{
if((random.nextInt(5) + 1) % 5 == 0)
showPressEnter = true;
}
2.
求一个0到8之间的数字,利用取余方法感觉更简洁。 比下面的三元运算效率应该还要高。
比如此示例用在数组中就比较合适。
curNum = (++curNum) % 8;
curNum == ++curNum >= 8 ? 0 : curNum;
3.
使用纹理贴图时使用的算法:
首先是定义要显示的行数和列数,然后实例化图片对象(texture),最后在paint方法中
添加如下代码即可:
for(int i=0;i<(row * cell);i++)
{
g.drawImage(texture,i%cell*ImageWidth,i/row*ImageHeight,
this);
}
4.
在旋转角度(rotation)里的角,是以“度”为单位;而在三角函数里的角要以“弧度”为单位。
例如: rotation2 ----是旋转2度; sin(π/2) ---- 是以大小为"π/2弧度"的角的正弦。
5.
在检测矩形间碰撞的方法时,最有效率的一个办法就是那矩形的边界做检查,
看代码即可:
public boolean isCollide(Sprite s){
if((X + width >= s.X) && (Y + height >= s.Y) &&
(s.X + s.width >= X) && (s.Y + s.height >= Y)){
//发生碰撞
return true;
}
return false;
}
如果发生碰撞后,要朝相反方向行走,则将各自的vx, vy都乘以-1(取反)即可。
6. 从一个点跑向另一个点:
首先得到两点的X,Y差值坐标,
然后得到两点的长度,
最后用X,Y差值坐标除以长度得到归一化的向量, 再乘以当前的速度即可到运行的速度。
private void move(){
int dx = Math.abs(round1.x - round2.x);
int dy = Math.abs(round1.y - round2.y);
double len = Math.sqrt(dx * dx + dy * dy);
rect.x += dx / len * speed;
rect.y += dy / len * speed;
}
7. 摩擦力的简单实现:
这里是使用摩擦力乘以x,y速度向量,摩擦力常用的值大约为0.9或0.8。
因此,在每一帧,vx 和 vy 的值都将变为上一次的 80% 或 90% 。这样
速度向量就会无限接近零,但永远不会等于零。
private var firction:int = 0.9;
function onEnterFrame(event:Event):void{
vx *= friction;
vy *= friction;
ball.x += vx;
ball.y += vy;
}