編集: Player.as と addchild を含めました
私は一日中これを行う方法を理解しようとしてきましたが、そうすることで多くのことを学びました. しかし、私は助けが必要なところまで来ました。
私はこれをしなければならないことを知っています: Back1 クラスに Collisions var を作成します。
Back1 と呼ばれる背景は、衝突イメージを含むムービークリップであるためです。
変数とクラスをうまく説明している 1 つまたは 2 つの優れたサイトを見つけましたが、この問題をどのように解決すればよいかまだわかりません
変数とクラスの後の調査:
http://www.republicofcode.com/tutorials/flash/as3variables/
上記の問題により、次のエラーが発生しますが、Back1 クラスで Collisions var を作成していないことが原因であると考えられます
ArgumentError: エラー #1063: Bumper() の引数の数が一致しません。予想: 2、値 0。
flash.display::MovieClip/gotoAndStop() で DocumentClass/onRequestStart()DocumentClass.as:64] で flash.events::EventDispatcher/dispatchEventFunction() で flash.events::EventDispatcher/dispatchEvent() で MenuScreen/onClickStart( )MenuScreen.as:18]
package { import flash.display.MovieClip; import flash.events.*; import flash.events.KeyboardEvent; import flash.ui.Keyboard; import flash.geom.Point; import Bumper; //import Back1; public class Test extends MovieClip { public var leftBumping:Boolean = false; public var rightBumping:Boolean = false; public var upBumping:Boolean = false; public var downBumping:Boolean = false; public var leftBumpPoint:Point = new Point(-30,-55); public var rightBumpPoint:Point = new Point(30,-55); public var upBumpPoint:Point = new Point(0,-120); public var downBumpPoint:Point = new Point(0,0); public var scrollX:Number = 0; public var scrollY:Number = 500; public var xSpeed:Number = 0; public var ySpeed:Number = 0; public var speedConstant:Number = 4; public var frictionConstant:Number = 0.9; public var gravityConstant:Number = 1.8; public var jumpConstant:Number = -35; public var maxSpeedConstant:Number = 18; public var doubleJumpReady:Boolean = false; public var upReleasedInAir:Boolean = false; public var keyCollected:Boolean = false; public var doorOpen:Boolean = false; public var currentLevel:int = 1; public var animationState:String = "idle"; public var bulletList:Array = new Array(); public var enemyList:Array = new Array(); public var bumperList:Array = new Array(); public var back1:Back1; public var collisions:Collisions; //public var back1:Collisions = new Collisions ; public var player:Player; public function Test() { addEventListener(Event.ADDED_TO_STAGE, init); } public function init(e:Event):void { player = new Player(320, 360); back1 = new Back1(); collisions = new Collisions(); //back1.collisions = new Collisons(); addBumpersToLevel1(); } public function addBumpersToLevel1():void { addBumper(500, -115); addBumper(740, -115); } public function addPlayerTolevel1():void { addPlayer(320, 360); } public function loop(e:Event):void { trace("back1.collisions "+back1.collisions); trace("back1 "+back1); trace("collisions "+collisions); if (back1.collisions.hitTestPoint(player.x + leftBumpPoint.x,player.y + leftBumpPoint.y,true)) {
Bumper.as を追加した場合に備えて
package {
import flash.display.MovieClip;
import flash.events.Event;
public class Bumper extends MovieClip{
public function Bumper(xLocation:int, yLocation:int) {
// constructor code
x = xLocation;
y = yLocation;
addEventListener(Event.ENTER_FRAME, bumper);
}
public function bumper(e:Event):void{
//code here
}
}
}
Player.as
package {
import flash.display.MovieClip;
import flash.events.Event;
public class Player extends MovieClip {
public function Player(xLocation:int, yLocation:int) {
// constructor code
x = xLocation;
y = yLocation;
}
// public function removeSelf():void {
// trace("remove enemy");
// removeEventListener(Event.ENTER_FRAME, loop);
// this.parent.removeChild(this);
// }
}
}
Back1.as ファイル (インスタンス化が間違っていることに注意してください)
package {
import flash.display.MovieClip;
public class Back1 extends MovieClip {
//public var collisions:Back1;
//what should i put here?
}
}