Редактировать визуально созданный класс в AS3 - PullRequest
0 голосов
/ 30 июля 2011

У меня есть некоторый класс, который я создал визуально во Flash Professional CS5, перенося нарисованный результат в MovieClip и выгрузив символ в код AS.Теперь я хочу добавить некоторые свойства в класс.Чтобы быть более конкретным, я создал класс Ball и хочу добавить к нему переменные, которые будут представлять вертикальную и горизонтальную скорости.Как я могу отредактировать класс, чтобы сделать это?Кроме того, когда я хотел добавить какой-то видимый внешний элемент в класс, сначала я решил добавить свойство MovieClip в сам код, но затем вызвал метод .addChild (), который отлично работал для меня.Теперь я не могу сделать то же самое с невидимыми свойствами.Итак, в чем разница между добавлением видимых элементов с помощью .addChild () и добавлением их в сам код?И КАК я могу добавить что-нибудь в сам код?

Ответы [ 3 ]

2 голосов
/ 31 июля 2011

Что вам нужно сделать, это создать внешний файл ActionScript для хранения определения класса. Создайте файл, назовите его Ball.as и заполните его

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

    public class Ball extends MovieClip {

        public var vx:Number = 0;
        public var vy:Number = 0;

        // add more variables here

        public function Ball() {

        }

        // add more functions here.

    }

}

В этом классе вы можете поместить все нужные функции и переменные и получить к ним доступ из кода временной шкалы. Поместите это в ту же папку, что и ваш .fla, и экспортируйте свой MovieClip шара как Ball, расширяя flash.display.MovieClip. Flash найдет определение для класса и использует его вместо сгенерированного.

Примечание:

  • если / когда вы добавляете больше функций или переменных, не забудьте добавить модификаторы доступа. (публичный, частный, охраняемый)
  • Если вы измените папку по отношению к .fla, вам также потребуется изменить пакет, поэтому, если вы создали папку com / mygame для всего исходного кода для вашей игры, вы изменили бы первую строку "упаковать com.mygame {" и экспортировать мувиклип как "com.mygame.Ball".
  • Возможно, вам придется изменить класс на динамический класс, добавив ключевое слово «dynamic» между public и class. Это означает, что вы можете добавлять свойства к классу во время выполнения, но за снижение скорости.

Я не понимаю, что вы подразумеваете под "добавлением невидимых свойств". Функция addChild () должна работать со всем, что подклассы DisplayObjectContainer (особенно Sprite и MovieClip), и должна работать со всем, что подклассы DisplayObject (включая Sprites, MovieClips, Bitmaps, TextFields и Shapes)

1 голос
/ 30 июля 2011

Вы можете изменить свой Flash-импортированный класс, расширив его или поместив в него контейнерный класс.

Эта обертка была моим выбором в двух моих играх.Я использовал его для добавления различных связанных с рисованием свойств или дополнительных объектов.

public class WrapperOverSprite extends Sprite
{
  private var instanceFromFlash: SomeClassTypeFromFlashViaSWC: new SomeClassTypeFromFlashViaSWC();
  //Add whatever other variables you wish.

   public function WrapperOverSprite  ()
   {
     //Do stuff to your object.
   }

   //Can add whatever functions you wish...
}

Нет необходимости говорить, что этот метод я использовал, экспортируя объекты из Flash через SWC-файл, который я импортировал в Flash / Flex Builder.

1 голос
/ 30 июля 2011

Вам, вероятно, следует избегать смешения физики с фактическим визуальным представлением. Попробуйте создать класс мяча, который содержит velocityX, velocityY и ссылку на ваш MovieClip. Заставьте класс Ball держать update(), который может выглядеть примерно так:

public function update() : void {
    ballMovieClip.x += velocityX;
    ballMovieClip.y += velocityY;
}

В вашем основном классе вы можете использовать Event.ENTER_FRAME -вент для вызова ball.update();

Таким образом, вы можете самостоятельно обновить графику мяча и физический код.

...