Flash与3D编程探秘(五)- 摄像机旋转和移动
2008-11-12 11:51:23 来源:WEB开发网3. 写一个循环函数,在每一次执行时刷新舞台上的所有的物体。
functionrun(e:Event)
{
if(camera.panning>2*PI)
camera.panning-=2*PI;
if(camera.panning<-1*2*PI)
camera.panning+=2*PI;
for(vari=0;i<scene.numChildren;i++) //updatealltheballsonthescreen
{
display(scene.getChildAt(i));
}
}
4. 下面设置一些键盘相应事件,使用WS我们可以使摄像机前进和后退,AD旋转我们的摄像机。键盘事件我们在前面提到过,就不多说了,如果有什么问题的话可以查看一下前面的例子。
functionrun(e:Event)
{
if(camera.panning>2*PI)
camera.panning-=2*PI;
if(camera.panning<-1*2*PI)
camera.panning+=2*PI;
for(vari=0;i<scene.numChildren;i++) //updatealltheballsonthescreen
{
display(scene.getChildAt(i));
}
}
functionkey_down(e:KeyboardEvent):void
{
if(e.keyCode==65)
pan_left=true;
if(e.keyCode==68)
pan_right=true;
if(e.keyCode==87)
move_forward=true;
if(e.keyCode==83)
move_backward=true;
}
functionkey_up(e:KeyboardEvent):void
{
if(e.keyCode==65)
pan_left=false;
if(e.keyCode==68)
pan_right=false;
if(e.keyCode==87)
move_forward=false;
if(e.keyCode==83)
move_backward=false;
}
functionkey_response(e:Event):void
{
if(pan_left)
camera.panning+=0.015; //increasethepanningangle
if(pan_right)
camera.panning-=0.015; //decreasethepanningangle
if(move_forward)
{
movement=20;
}
if(move_backward)
{
movement=-20;
}
if(move_forward||move_backward)
{
camera.x+=Math.sin(camera.panning)*movement;
camera.z+=Math.cos(camera.panning)*movement;
}
}
//addloopeventlistener
this.addEventListener(Event.ENTER_FRAME,run);
this.addEventListener(Event.ENTER_FRAME,key_response);
stage.addEventListener(KeyboardEvent.KEY_DOWN,key_down);
stage.addEventListener(KeyboardEvent.KEY_UP,key_up);
- ››FLASH不等于运算符!=的使用实例
- ››FLASH不全等运算符!==
- ››FLASH字符串分隔符运算符
- ››FLASH% 模运算符
- ››Flash+、++、+= 加法运算符
- ››Flash, 逗号运算符
- ››flash中的-、--、-=减法运算符
- ››Flash的-Infinity 常数、.点运算符、/ 除法运算符...
- ››Flash两种注释方法/*..*/ 和// 注释行分隔符运算符...
- ››Flash的/=除法赋值运算符、=赋值运算符、== 等于运...
- ››Flash之?: 条件运算符、^ 按位 XOR 运算符、^= 按...
- ››Flash的_framesloaded代码示例
更多精彩
赞助商链接