Получение свойств из одного класса в другой в AS3 - PullRequest
0 голосов
/ 08 марта 2011

Это мой код для основного класса:

package {
import flash.display.*;
import flash.events.Event;

public class Main extends Sprite{

    private var ball:Ball;
    private var paddle:Paddle;

    public function Main():void {
        addToUI();
        beginCode();
    }

    public function beginCode():void {
        addEventListener(Event.ENTER_FRAME, move);
        addEventListener(Event.ENTER_FRAME, hitTest);
    }

    public function move(event:Event):void {
        ball.move();
    }


    private function hitTest(event:Event):void {
        if(ball.hitTestObject(paddle)){
            vy = -20;
        }
    }

    private function addToUI():void {
        paddle = new Paddle();
        ball = new Ball();
        addChild(paddle);
        addChild(ball);

        paddle.x = 50;
        paddle.y = 200;

        ball.x = 75;
        ball.y = 100;
    }
}

}

Это мой код для класса Ball:

package {

import flash.display.*;
import flash.events.Event;

public class Ball extends MovieClip {
    public var vy:Number = 10;

    public function move():void {
        vy += 2;
        this.y += vy;
    }

    /*
    public function hitTest(paddle):void {
        if(this.hitTestObject(paddle)){
            vy = -20;
        }
    }
    */
}

}

Мне трудно заставить тест на столкновение работать правильно. Когда я использую f. ех. использовать

trace("Collision works")

в функции hitTest, она отвечает правильно. Но я не могу изменить vy-свойство. Я также пытался написать hitTest в классе Ball, но затем компилятор сообщает мне, что свойство paddle не определено.

Как мне это сделать?

1 Ответ

1 голос
/ 08 марта 2011

Вы должны изменить vy для экземпляра мяча:

private function hitTest(event:Event):void {
    if(ball.hitTestObject(paddle)){
        ball.vy = -20;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...