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

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

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

Регистрация: Dec 2006
Адрес: Россия, Пермь
Сообщений: 72
Отправить сообщение для Amra Kimmerian с помощью ICQ
По умолчанию О классах и их образцах

Здравствуйте. Пора настала и ООП изучать, посмотрел (уже по привычке) FAQ, поиск, на разных сайтах побывал, поскачивал уроки и их поизучал, ну и хелп конечно. Прояснилось для меня мало. Исходники и уже созданные классы - что мертвому припарки, если их не знать самому досканально. Что то вроде "создадим класс Car" - это конечно поначалу интересно, но как то не жизненно ориентированно. Очень уважаю всех, кто пишет уроки, ответы и прочие пособия, но, например, для меня данный урок что то вроде "Вам нужно слетать на Луну? Создадим Ракету!". Мне не надо на Луну. Мне, к примеру, нужно "Сварить кофе". А "Ракета", созданная для этого не хочет его варить. Поэтому все же буду у Вас спрашивать, "как открыть банку, где взять ложку и сколько нужно воды."
Это сравнение, а теперь к фактам. Мне нужно к присоединенному из библиотеки клипу "присоединить" еще один метод. К примеру myClip.getDepth() - это метод класса MovieClip. Мне вот волею судеб понадобилось создать метод getLighting() - который будет рисовать внутри клипа молнию. Математический аппарат для отображения молнии я уже разработал и внедрил его во флэш, получилось очень красиво и довольно динамично. Т.е. как бы так сделать чтобы к любому нужному клипу в нужное время применяю этот метод и по размеру клипа начинает бить разные молнии.
Конечно сразу появилась мысль сделать это посредством класса, точнее расширением класса MovieClip, и тут началось. При создании молнии без класса использовались и setInterval() и массивы и функции.
Начал перегонять в класс все это и (естественно) столкнулся с проблемами. Вот код (я все лишнее и пока здесь не нужное убрал):

Код:
class Lighting extends MovieClip {
    private var _anchorPointXdiffMax:Array;
    private var _myNumber:Number;
    private function Lighting() {
    }
    function getLighting(timeL:Number, pauseL:Number) {
        _myNumber = 10;
        trace(_myNumber)
        _anchorPointXdiffMax[0]=15;
        trace(_anchorPointXdiffMax[0])
    }
}
Использую класс так:
Код:
import Lighting;
stop();
_root.attachMovie("lightingCont", "mc", 1);
var timeL:Number = 2000;
var pauseL:Number = 1000;
mc.getLighting(timeL, pauseL);
Конечно в параметрах Linkage для мувиклипа lightingCont указал класс Lighting.
1. Самый явный вопрос. trace(_myNumber) выдает 10, а trace(_anchorPointXdiffMax[0]) выдает undefined. Ведь инициализация одинаковая, применение тоже, почему так?
2. Если к примеру сторку private var _myNumber:Number; убрать а вместо нее в методе getLighting написать var _myNumber:Number; то тоже выдает 10, в чем же тогда разница? Зачем мне объявлять переменные класса, если их можно объявить внутри метода класса. По моему сложившемуся мнению переменные класса нужны как величины, которые может использовать любой из методов внутри класса. Но вот только сел, а уж с массивами уже не лады.
3. Вытекает из 2. Нужно ли мне вообще использвать расширение класса для обеспечения такой функциональности или это целесообразней сделать вне класса, просто как метод. Можно ли так сделать вообще и если можно то в какую сторону двигаться?
4. У меня пустой конструктор класса. Вероятно для избежания ошибок нужно было как нибудь (не смейтесь пожалуйста ) его использовать, но просто переприсваивание переменных... я не понял честно говоря.

Насколько смог, изложил. Помогите пожалуйста.

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

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

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


 


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


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