Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.03.2013, 03:35
dimaMJ вне форума Посмотреть профиль Отправить личное сообщение для dimaMJ Найти все сообщения от dimaMJ
  № 1  
Ответить с цитированием
dimaMJ

Регистрация: Feb 2013
Сообщений: 51
По умолчанию Проблема с _root.onEnterFrame=function ()

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

Старый 27.03.2013, 10:18
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 2  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
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.
__________________
hauts.ru


Последний раз редактировалось Hauts; 27.03.2013 в 11:17.
Старый 27.03.2013, 12:51
dimaMJ вне форума Посмотреть профиль Отправить личное сообщение для dimaMJ Найти все сообщения от dimaMJ
  № 3  
Ответить с цитированием
dimaMJ

Регистрация: Feb 2013
Сообщений: 51
То есть в update() создавать экземпляры и вызывать ф-ции, так?

Добавлено через 3 часа 40 минут
ну я даже вот так элементарно пробовал проверить работу. Только создал экземпляр класса в кадре и вызвал конструктор и ничего не выводит.
Код AS1/AS2:
class Gameloader
{
 
 
	function Gameloader(){
 
 
_root.onEnterFrame = function() {
  trace ("Вызван обработчик onEnterFrame");
}
 
	}
}

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:21.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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