Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Проблема с _root.onEnterFrame=function () (http://www.flasher.ru/forum/showthread.php?t=196569)

dimaMJ 27.03.2013 03:35

Проблема с _root.onEnterFrame=function ()
 
Обьясните пожалуйста, почему когда в классе пишешь или
Код AS1/AS2:

_root.onEnterFrame=function () {
 
}

или
Код AS1/AS2:

_root.onLoad = function() {
 
}

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

Hauts 27.03.2013 10:18

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

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

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

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

Цитата:

Этот оператор в определении класса недопустимо.
Как это решить?
Плохое решение:
Код AS1/AS2:

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

Решение чуть получше:
Код AS1/AS2:

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 минут
ну я даже вот так элементарно пробовал проверить работу. Только создал экземпляр класса в кадре и вызвал конструктор и ничего не выводит.
Код AS1/AS2:

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



Часовой пояс GMT +4, время: 00:06.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.