PDA

Просмотр полной версии : Проблема с _root.onEnterFrame=function ()


dimaMJ
27.03.2013, 03:35
Обьясните пожалуйста, почему когда в классе пишешь или
_root.onEnterFrame=function () {

}
или
_root.onLoad = function() {

}
выдает ошибку - Этот оператор в определении класса недопустимо.
Как это решить?

Hauts
27.03.2013, 10:18
dimaMJ, я как-то уже рассказывал, как можно организовать структуру игрушки:

Создаете основной класс, например, GameController и в конструктор его передаете ссылку на _root. Далее уже в классах используете эту ссылку, но не сам _root.

Создаете игровые слои — createEmptyMovieClip(...), в него ставите контент слоя, и на него же вешаете onEnterFrame, если это так необходимо.

Персонажа, врагов и динамические объекты на уровне лучше обновлять в одном методе, а не навешивать на каждого свой onEnterFrame.

Этот оператор в определении класса недопустимо.
Как это решить?

Плохое решение:

class MyClass {
function MyClass(){
_root.onEnterFrame = update;
}
function update(){
//...
}
}


Решение чуть получше:

class MyClass {
function MyClass(){
var d = _root.getNextHighestDepth();
_root.createEmptyMovieClip("___enterFrameCatcher_" + d, d).onEnterFrame = update;
}
function update(){
//...
}
}



Возможно я ошибаюсь в некоторых моментах, но, думаю, что идея ясна. Давно не писал классы на ас2.

dimaMJ
27.03.2013, 12:51
То есть в update() создавать экземпляры и вызывать ф-ции, так?

Добавлено через 3 часа 40 минут
ну я даже вот так элементарно пробовал проверить работу. Только создал экземпляр класса в кадре и вызвал конструктор и ничего не выводит.
class Gameloader
{


function Gameloader(){


_root.onEnterFrame = function() {
trace ("Вызван обработчик onEnterFrame");
}

}
}