欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

【水果忍者】血日狂刀代码-_-#真的只有一把刀

程序员文章站 2022-04-27 12:36:26
...
本人是学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);
   }
  }
 }
}


本文由提供,介绍了如何使用as3写出一把水果忍者里的刀的代码,鉴于flash已被淘汰,代码仅供参考。

文章地址:http://www.php.cn/html5-tutorial-374270.html

请勿转载~~~~

不喜勿喷~~~~~

以上就是【水果忍者】血日狂刀代码-_-#真的只有一把刀的详细内容,更多请关注其它相关文章!