本人是学php的,但是早期对于as3还是有一段时间的研究,虽然flash已经被淘汰了,但是对于程序语言无比热爱的我来说,
actionscript的有些方面还是值得借鉴的,as3在游戏开发方面就很有特色。
下面是本人整理的水果忍者里的一把刀代码,
代码贴上,仅供参考:
Main.as
package { import flash.events.*; import flash.display.*; import flash.filters.BitmapFilter; import flash.filters.BlurFilter; import flash.filters.GlowFilter; import flash.geom.ColorTransform; import flash.text.*; public class Main extends Sprite { private var info:TextField private var score:int = 0 private var lost:int = 0 private var time:int = 0 private var particles:Array private var rubbishs:Array private var lines:Array private var cutlayer:Shape private var cutBmdLayer:BitmapData private var cutlayerFilter:BitmapFilter private var cutlayerCT:ColorTransform private var flayer:Shape private var fBmdLayer:BitmapData private var flayerFilter:BitmapFilter private var flayerCT:ColorTransform private var lastX:Number private var lastY:Number public function Main():void { this.particles = []; this.rubbishs = []; this.lines = []; this.cutlayer = new Shape(); this.flayer = new Shape(); super(); //Wonderfl.capture(stage); this.info = new TextField(); this.info.autoSize = TextFieldAutoSize.LEFT; this.info.multiline = true; this.fBmdLayer = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0); addChild(new Bitmap(this.fBmdLayer)); this.flayerFilter = new BlurFilter(); this.flayerCT = new ColorTransform(1, 1, 1, 0.5); this.cutBmdLayer = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0); var _local1:Bitmap = new Bitmap(this.cutBmdLayer); addChild(_local1); addChild(this.info); _local1.filters = [new GlowFilter(0xFF0000, 1, 16, 16, 2, 3, false, false)]; this.cutlayerFilter = new BlurFilter(2, 2, 3); this.cutlayerCT = new ColorTransform(1, 1, 1, 0); stage.addEventListener(MouseEvent.MOUSE_DOWN, this.onMD); //addEventListener(Event.ENTER_FRAME, this.update); _scene = new Sprite(); this.addChild(_scene); _scene.filters = [new GlowFilter(0x00CCFF, 1, 10, 10, 2, 1, false, false)]; stage.addEventListener(MouseEvent.MOUSE_DOWN, downHandler); stage.addEventListener(MouseEvent.MOUSE_UP, upHandler); this.addEventListener(Event.ENTER_FRAME, enterFrame); } private function onMD(_arg1:MouseEvent):void { this.lastX = mouseX; this.lastY = mouseY; stage.addEventListener(MouseEvent.MOUSE_MOVE, this.onMM); stage.addEventListener(MouseEvent.MOUSE_UP, this.onMU); } private function onMU(_arg1:MouseEvent):void { stage.removeEventListener(MouseEvent.MOUSE_MOVE, this.onMM); stage.removeEventListener(MouseEvent.MOUSE_UP, this.onMU); } private function onMM(_arg1:MouseEvent):void { var _local2:Line1 = new Line1(); _local2.x1 = this.lastX; _local2.y1 = this.lastY; this.lastX = mouseX; this.lastY = mouseY; _local2.x2 = this.lastX; _local2.y2 = this.lastY; this.lines.push(_local2); } private var _cacheX:int; private var _cacheY:int; private var _isDown:Boolean; private var _scene:Sprite; private function downHandler(e:MouseEvent):void { _cacheX = mouseX; _cacheY = mouseY; _isDown = true; } private function upHandler(e:MouseEvent):void { _isDown = false; } private function enterFrame(e:Event):void { for each (var l:Line in Line.sets) { l.update(); } updateLine(); } private function updateLine():void { if (!_isDown) return; var line:Line = new Line(_cacheX, _cacheY, mouseX, mouseY); _scene.addChild(line); _cacheX = mouseX; _cacheY = mouseY; } } }//package import flash.display.*; class Line1 { public var x1:Number public var y1:Number public var x2:Number public var y2:Number public var state:int = 0 public function Line1() { } public function get length():Number { return (Math.sqrt((((this.x2 - this.x1) * (this.x2 - this.x1)) + ((this.y2 - this.y1) * (this.y2 - this.y1))))); } } import flash.display.Sprite; class Line extends Sprite { static public var sets:Array = []; public var sX:int; public var sY:int; public var eX:int; public var eY:int; public var linesize:Number; public var state:int = 0 public function Line($sX:int, $sY:int, $eX:int, $eY:int, $linesize:Number = 8) { sets.push(this); sX = $sX; sY = $sY; eX = $eX; eY = $eY; linesize = $linesize; draw(); } private function draw():void { graphics.clear(); graphics.lineStyle(linesize, 0xFFFFFF); graphics.moveTo(sX, sY); graphics.lineTo(eX, eY); } public function update():void { draw(); linesize -= 1; if (linesize < 1) { clear(); } } private function clear() { graphics.clear(); for (var i:String in sets) { var l:Line = sets[i] as Line; if (l == this) { sets.splice(i, 1); parent.removeChild(this); } } } }
本文由php中文网提供,介绍了如何使用as3写出一把水果忍者里的刀的代码,鉴于flash已被淘汰,代码仅供参考。
文章地址:http://www.php.cn/html5-tutorial-374270.html
请勿转载~~~~
不喜勿喷~~~~~