所属分类:web前端开发
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);
}
}
}
}
登录后复制
本文由zzsucai.com提供,介绍了如何使用as3写出一把水果忍者里的刀的代码,鉴于flash已被淘汰,代码仅供参考。
文章地址:http://www.php.cn/html5-tutorial-374270.html
请勿转载~~~~
不喜勿喷~~~~~
以上就是【水果忍者】血日狂刀代码-_-#真的只有一把刀的详细内容,更多请关注zzsucai.com其它相关文章!