我正在写一个小小的Flash游戏,我遇到了将MovieClip添加到舞台上的问题。
我有函数createBricks(),它将MovieClip添加到stage。如果我这样做:
public function createBricks():void
{
for (var i:int = 0; i < amountOfBricks; i++)
{
var brick:MovieClip = new brick2();
brick.x = i * brick.width + 10;
brick.y = 6;
addChild(brick);
}
}
一切都很好,我可以在舞台上看到砖头。但问题是我需要在Brick类中有一些逻辑。
所以,如果我这样做:
public function createBricks():void
{
for (var i:int = 0; i < amountOfBricks; i++)
{
var brick:MovieClip = new Brick(this);
brick.x = i * brick.width + 10;
brick.y = 6;
addChild(brick);
}
}
我无法在舞台上看到MovieClips。 任何帮助表示赞赏。
类砖代码:
package
{
import flash.display.MovieClip;
import flash.events.Event;
import Arkanoid;
public class Brick extends MovieClip
{
private var mParent:MovieClip;
public function Brick(parent:Arkanoid)
{
this.mParent = parent;
super();
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
private function enterFrameHandler(event:Event):void
{
if (this.hitTestObject(mParent.view.ball))
{
mParent.ballYSpeed *= -1;
mParent.removeChild(this);
removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
}
}
}
游戏类:
package
{
import flash.display.MovieClip;
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.MouseEvent
import flash.events.Event;
import Brick;
public class Arkanoid extends MovieClip
{
private var mView:MovieClip;
private var paddle:MovieClip;
private var ball:MovieClip;
private var amountOfBricks:int = 6;
private var ballXSpeed:int = 10;
private var ballYSpeed:int = 10;
public function Arkanoid()
{
mView = new GameView();
paddle = mView.paddle;
ball = mView.ball;
super();
}
public function start():void
{
addListeners();
paddle.x = 100;
createBricks();
addChild(mView);
}
public function addListeners():void
{
mView.addEventListener(MouseEvent.MOUSE_MOVE, paddle_mouseMoveHandler);
mView.addEventListener(Event.ENTER_FRAME, ball_enterFrameHandler);
}
private function paddle_mouseMoveHandler(event:MouseEvent):void
{
paddle.x = mouseX - paddle.width / 2;
if (mouseX < paddle.width / 2)
{
paddle.x = 0;
}
if (mouseX > mView.width - paddle.width / 2)
{
paddle.x = mView.width - paddle.width;
}
}
private function ball_enterFrameHandler(event:Event):void
{
ball.x += ballXSpeed;
ball.y += ballYSpeed;
if (ball.x >= mView.width - ball.width)
{
ballXSpeed *= -1;
}
if (ball.x <= 0)
{
ballXSpeed *= -1;
}
if (ball.y >= mView.height - ball.height)
{
ballYSpeed *= -1;
}
if (ball.y <= 0)
{
ballYSpeed *= -1;
}
if (ball.hitTestObject(paddle))
{
calculateBallAngle();
}
}
private function calculateBallAngle():void
{
var ballPosition:Number = ball.x - paddle.x;
var hitPercent:Number = (ballPosition / (paddle.width - ball.width)) - .5;
ballXSpeed = hitPercent * 10;
ballYSpeed = - 1;
}
public function createBricks():void
{
for (var i:int = 0; i < amountOfBricks; i++)
{
//var brick:MovieClip = new brick2();
var brick:MovieClip = new Brick(this);
brick.x = i * brick.width + 10;
brick.y = 6;
addChild(brick);
}
}
public function get view():MovieClip
{
return mView;
}
}
}
答案 0 :(得分:0)
<强> 1 |创建名为Brick的类
class Brick extends MovieClip {
var ground;
public function Brick(_ground){
ground = _ground;
var brickSample:MovieClip = new brick2();
addChild(brickSample);
}
}
<强> 2 |现在,您可以按照自己的意愿创建动画片段
public function createBricks():void
{
for (var i:int = 0; i < amountOfBricks; i++)
{
var brick:MovieClip = new Brick(this);
brick.x = i * brick.width + 10;
brick.y = 6
addChild(brick);
}
}
希望有所帮助