当前位置:  开发笔记 > 编程语言 > 正文

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

本文由php中文网提供,介绍了如何使用as3写出一把水果忍者里的刀的代码,鉴于flash已被淘汰,代码仅供参考。
本人是学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.php1.cn/html5-tutorial-374270.html

请勿转载~~~~

不喜勿喷~~~~~

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

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有