媒体动画 > Flash教程 > ActionScript教程 >

Flash AS3代码实现鼠标跟随喷枪涂鸦效果

2008-11-24 00:41:12 脚本之家

11.打开动作面板输入下列代码:/*我们需要创建一个BitmapData对象以便以一个像素图形对象工作。我们希望wallCanvas一开始时是透明的,这就是为什么我们用0x00ffffff值作参数。*/var wallCanvas:BitmapData = new BitmapData(stage.stageWidth,stage.stageHeight - 100,true, 0x00ffffff);//创建一个归类于 BitmapData对象的位图对象。var bitmap:Bitmap = new Bitmap(wallCanvas);//在舞台上添加一个位图addChild (bitmap);//监听墙上的鼠标点下事件drawingArea.addEventListener (MouseEvent.MOUSE_DOWN, mouseDownHandler);//监听整个舞台上的鼠标放开事件stage.addEventListener (MouseEvent.MOUSE_UP, mouseUpHandler);//喷枪的颜色var color:uint;//喷枪的最大半径var maxRadius:Number;//喷枪的密度var density:Number;//当鼠标在墙上点下时调用function mouseDownHandler (event:MouseEvent):void {//增加EVENT_FRAME 这样我们可以在每一帧绘制addEventListener (Event.ENTER_FRAME, onEnterFrame);}//当鼠标放开时调用function mouseUpHandler (event:MouseEvent):void {//如果鼠标放开时(没有绘制),我们就不需要EVENT_FRAME了removeEventListener (Event.ENTER_FRAME, onEnterFrame);}//这个函数负责整个绘制过程function onEnterFrame (event:Event):void {//从sizeSlider中获得尺寸maxRadius = sizeSlider.value;/*从myColorPicker.中获得颜色,当我们绘制时(我们循环绘制像素)我们使用0xff000000创建像素的颜色。*/color = myColorPicker.selectedColor + 0xff000000;//从densitySlider中获得密度density = densitySlider.value;/*这个密度定义了我们循环了多少次,换言之,在每一帧绘制了多少像素*/for (var i:int = 0; i < density; i++) {//计算一个随机角度var angle:Number = Math.random() * Math.PI * 2;//计算一个被画的像素的随机半径var radius:Number = Math.random() * maxRadius;//计算x和y的位置var xPos:Number = mouseX + Math.cos(angle) * radius;var yPos:Number = mouseY + Math.sin(angle) * radius;//画像素wallCanvas.setPixel32 (xPos, yPos, color);}}你已经完成了,如果有什么问题,请访问论坛。快乐的一天!下面给出本例的代码,朋友们可以研究下

上一页 1 2 34 下一页 阅读全文