flash位图技术研究篇:缓冲技术
2010-03-02 00:00:00 来源:WEB开发网2.4控制飞机运行
曾经有一个广告讲一群小朋友的未来梦想,有一个人说到,希望将来可以开飞机。我们也像他们一样,让位图跟随我们控制移动
导入 import flash.ui.Keyboard;包
监听按键事件:
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDown);
private function keyDown(e:KeyboardEvent):void
{
}
但是通过这种方式来控制我们的飞机,并不让我们觉得开心,因为响应按键事件的时候,我们觉得一点也不流畅。这需要我们对程序进行改进,加以修改方式。而这里主要讲的是这个怎样建立缓冲位图区和绘制图形到窗口去。
代码如下:
1. package
2. {
3. import flash.display.*;
4. import flash.display.Bitmap;
5. import flash.display.BitmapData;
6. import flash.events.*;
7. import flash.geom.*;
8. import flash.ui.Keyboard;
9. public class Example2 extends Sprite
10. {
11. private var backBuffer:BitmapData=new BitmapData(550,400,false);//建立一个缓冲区
12. private var clearColor:uint=0x0000FF;//指定填充的颜色
13. private var myplane:plane=new plane(59,43);//我们在flash 库里面的资源,是bitmapdata的一个子类
14. private var position:Point=new Point(250,200);// 指定像素位置
15. public function Example2()
16. {
17.
18. addEventListener(Event.ENTER_FRAME,Run);
19. stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDown);
20. }
21. private function init():void
22. {
23. backBuffer.fillRect(backBuffer.rect, clearColor);//填充
24. backBuffer.copyPixels(myplane,myplane.rect, position, myplane.bitmapAlpha, new Point(0, 0), true);
25. var iamge:Sprite=new Sprite();//建立一个位图
26. addChild(iamge);//显示位图
27. iamge.graphics.clear();
28. iamge.graphics.beginBitmapFill(backBuffer, null, false, false);//使用 填充位图的方法 填充缓冲区
29. iamge.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);//画出矩形
30. iamge.graphics.endFill();//结束填充
31. }
32. private function Run(e:Event):void
33. {
34. init();
35.
36. }
37. private function keyDown(e:KeyboardEvent):void
38. {
39. if (e.keyCode==Keyboard.UP)
40. {
41. position.y-=5;
42. }
43. else if (e.keyCode==Keyboard.DOWN)
44. {
45. position.y+=5;
46. }
47. else if (e.keyCode==Keyboard.LEFT)
48. {
49. position.x-=5;
50. }
51. else if (e.keyCode==Keyboard.RIGHT)
52. {
53. position.x+=5;
54. }
55. }
56. }
57. }
好,暂时写到这里
语法参考:
beginBitmapFill(bitmap:BitmapData, matrix:Matrix = null, repeat:Boolean = true, smooth:Boolean = false):void
用位图图像填充绘图区。
clear():void
清除绘制到此 Graphics 对象的图形,并重置填充和线条样式设置。
drawRect(x:Number, y:Number, width:Number, height:Number):void
绘制一个矩形。
copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void
为没有拉伸、旋转或色彩效果的图像之间的像素处理提供一个快速例程。
- ››FLASH不等于运算符!=的使用实例
- ››FLASH不全等运算符!==
- ››FLASH字符串分隔符运算符
- ››FLASH% 模运算符
- ››Flash+、++、+= 加法运算符
- ››Flash, 逗号运算符
- ››flash中的-、--、-=减法运算符
- ››Flash的-Infinity 常数、.点运算符、/ 除法运算符...
- ››Flash两种注释方法/*..*/ 和// 注释行分隔符运算符...
- ››Flash的/=除法赋值运算符、=赋值运算符、== 等于运...
- ››Flash之?: 条件运算符、^ 按位 XOR 运算符、^= 按...
- ››Flash的_framesloaded代码示例
更多精彩
赞助商链接