ホームページ  >  記事  >  ウェブフロントエンド  >  [フルーツ忍者] ブラッドサン クレイジーナイフ コード-_-#ナイフは本当に一本しかない

[フルーツ忍者] ブラッドサン クレイジーナイフ コード-_-#ナイフは本当に一本しかない

PHP中文网
PHP中文网オリジナル
2017-07-15 12:00:241971ブラウズ

私はPHPを勉強していますが、初期の頃はAS3も一時期勉強していましたが、Flashがなくなってしまったとはいえ、プログラミング言語が大好きな私にとって、

actionscriptはまだ学ぶ価値があります。いくつかの点で、as3 はゲーム開発において非常に特徴的です。

以下は私がコンパイルしたFruit Ninjaのナイフコードです

​​

コードは参考のために掲載しています:

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 Fruit Ninjaでナイフのコードを書く Flashが省かれているので参考程度に。

記事アドレス: http://www.php.cn/html5-tutorial-374270.html

転載はご遠慮ください~~~~

気に入らない場合はコメントしないでください~~~~ ~

以上が[フルーツ忍者] ブラッドサン クレイジーナイフ コード-_-#ナイフは本当に一本しかないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。