Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамическое создание MovieClip с помощью класса, Не работает таймер и добавление 
V
    Опции темы
efpies
Дата 28.4.2010, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 20.6.2009
Где: СПб

Репутация: нет
Всего: нет



Задача: грубо смоделировать падение нескольких мячей.

Написал класс balls, но сразу же возникли проблемы.

1. Конструктор имеет вид:
Код

public function balls(left:int, max:int)
{ ... }

при попытке создания объекта
Код

var ball:balls = new balls(20, 200);

вываливается
Код

ArgumentError: Error #1063: Несоответствие количества аргументов в balls(). Ожидалось 2, получено 0.

какого он запускает конструктор, игнорируя параметры?

2. Собственно сам класс
Код

package
{
    import flash.display.MovieClip;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    
    public class balls extends MovieClip
    {
        public var one:MovieClip;
        public var H, fps:int;
        public var h, T, g:Number;
        public var mode:Boolean;
        var timer:Timer;
        
        public function balls(left:int, max:int)
        {
            g = 800/25*100;
            fps = 24;
            timer = new Timer(1000/fps);
            
            mode = false;
        }
        
        public function Init(left:int, max:int)
        {
            one = new MovieClip;
            H = max;
            h = H;
            T = Math.sqrt(2*H/g);
            one.x = left;
            one.y = 400-H;
            
            addChild(one);
            printit();
            
            timer.addEventListener("Timer",go);
            timer.start();
        }
            
        private function go(event:TimerEvent):void
        {
            var t:Number = timer.currentCount/fps;
            
            trace(t);
    
            if(t > T)
            {
                if(!mode)
                    h = H - g*t*t/2;
                else
                    h = H - g*(T-t)*(T-t)/2;
                    
                mode = !mode;
                timer.reset();
                timer.start();
            }
            else
                switch(mode)
                {
                    case false:        h = H - g*t*t/2;
                                    break;
        
                    case true:        h = H - g*(T-t)*(T-t)/2;
                }
    
            one.y = 400 - h;
            trace(h);
        }
        
        function printit() { trace(121); }
    }
}


Создаю кружок, делаю его MovieClip, задаю в Linkage класс balls. Создаю - пусто. (Кстати, что значит в Properties пункт Instance of?)
Таймер не работает: функция go не запускается ни разу, но конструктор запускается.

Кстати, при попытке запуска конструктора с двумя параметрами, вываливается к тому же, что mode не является Boolean. И вообще, всё это было написано вне класса и прекрасно работало, но стоило всунуть это в класс, как оно сразу закапризничало и неявно попросило добавить ещё 2 бибилиотеки Timer'а да сменить E:Event на event:Timer. Что это, к чему это?

ЧЯДНТ?
PM MAIL   Вверх
efpies
Дата 1.5.2010, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 20.6.2009
Где: СПб

Репутация: нет
Всего: нет



Разобрался.
1) Вызов таймера должен был иметь вид
Код

var timer:Timer;

public function Constructor()
{
   timer = new Timer(1000/fps,0);
   timer.addEventListener(TimerEvent.TIMER, doit);
   timer.start();
}

public function doit(event:TimerEvent)
{ }

2) Класс для объекта должен был тоже находиться в отдельном *.as
3) Судя по всему, главный класс вызывается без параметров (ибо вызывается автоматически при старте).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ActionScript 3 | Следующая тема »


 




[ Время генерации скрипта: 0.0909 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.