PDA

Просмотр полной версии : Паттерны Новая версия приложения на основе старой


Antisly
28.03.2015, 22:30
Приветствую! Не смог найти решение в гугле, поэтому решил обратиться к гуру :)

Задача такая: есть приложение на AS3. Допустим, у мувика базовый класс OldClass. В мувике есть объекты, к которым обращаюсь из методов этого класса.

Теперь я хочу расширить функционал старого приложения и наследованием создаю класс NewClass. Соответственно, у мувика меняю базовый класс на NewClass. Тут-то и вылезает проблема, что базовый класс OldClass теперь не видит объекты в мувике. Идут ошибки типа "1120: Access of undefined property..."

Как быть в таких случаях? Как обходить такие проблемы? Дайте наводку, пожалуйста...

callme
28.03.2015, 23:21
В голову пришел такой вариант

package
{
import flash.display.MovieClip;

public class OldClass extends MovieClip
{
public function OldClass()
{

}

public function someMethod():void
{
this['колесоМашинки'].x = 100;
}
}
}

Antisly
29.03.2015, 00:57
В голову пришел такой вариант

Спасибо! Что-то я не догадался. Как временный вариант пойдет, пока не перепишу все с нуля под Flex.

dimarik
30.03.2015, 21:27
... Допустим, у мувика базовый класс OldClass ...
А разве у "мувика" базовый класс не flash.display.MovieClip?
А теперь, допустим вы расширяете его до своего "мувика" таким образом:

public dynamic class OldClass extends flash.display.MovieClip {
// constructor here
}


Теперь я хочу расширить функционал старого приложения и наследованием создаю класс NewClass.

Типа того:
public dynamic class NewClass extends OldClass {
// constructor here
}

или

public dynamic class NewClass extends flash.display.MovieClip {
// constructor here
}

?

Antisly
30.03.2015, 23:03
Типа того:
public dynamic class NewClass extends OldClass {
// constructor here
}?

Да, делаю так, только без dynamic.

В мувике есть добавленные на сцену в визуальном режиме компоненты. Они-то и перестают быть видимые в OldClass. Помог способ, подсказанный callme:

this['колесоМашинки'].x = 100;