Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Dir-галерея книга с перелистыванием страниц (http://www.flasher.ru/forum/showthread.php?t=118429)

musat 26.11.2008 12:51

unused_name
Цитата:

Конструктор — специальный метод класса в объектно-ориентированном программировании, служащий для инициализации объекта при его создании.
Другими словами, на примере ActionScript, конструктор класса - это метод класса (функция) с таким же названием, как и сам класс. Этот метод будет вызван, например, при создании экземпляра этого класса с помощью new, аналогично
Код AS3:

var mc:MovieClip = new MovieClip();

или при указании класса как Document Class.

Попробуйте так:
Код AS3:

package {
 
    import flash.display.MovieClip;
    import flash.events.KeyboardEvent;
 
    public class mein extends MovieClip {
 
        public function mein() {
            // конструктор
 
            stage.displayState="fullScreen";
            stage.addEventListener(KeyboardEvent.KEY_DOWN,control);
        }
    }
}

Система вложенности объектов примерно такая же, только в AS2 _root - обращение к главной временной шкале, а в AS3 root - обращение к Document Class'у.

SamFR 26.11.2008 21:20

Если этот код расположен в mein (именно в КЛАССЕ mein, а не просто в файле mein.as), то ругаться, по идее, не должен. На всякий случай, попробуй сделать так:

Код AS3:

package {
        import flash.display.MovieClip;
        import flash.events.KeyboardEvent;
        import flash.events.Event;
 
        public class mein extends MovieClip {
 
                //это - конструктор, будет вызван при создании экземпляра класса,
                //то есть раньше всего остального, что есть в классе
                public function mein(){
                        addEventListener(Event.ADDED_TO_STAGE, eAdded);
                }
 
                protected function eAdded(e:Event):void{
                        stage.displayState = 'fullScreen';
                        stage.addEventListener(KeyboardEvent.KEY_DOWN, control);
                }
        }
}

Здесь мы слушаем событие ADDED_TO_STAGE, которое посылается, когда экземпляр класса добавлен в display list. Для обычных классов свойство stage становится ненулевым только после этого.
Для DocumentClass-а же свойство stage должно быть доступно уже в конструкторе, но, на всякий случай, попробуй так. Странный глюк.

unused_name 28.11.2008 02:30

А как можно выключить на время EventListener, пока идет какая-либо анимация например?
stage.removeEventListener(что тут писать?) или может есть какой-нибудь для него disable?

Смольный (Smolniy) 28.11.2008 05:15

В Инете действительно полно примеров - более того, готовых софтов, который вы покупаете и скармливаете ему ваши странички (растры или pdf), и оно сразу работает. Цена - около 100$ (например, тот же http://www.flashpageflip.com/ )
И знаете, оно работает не только от мышки, но и от клавы, например, кнопок влево-вправо!.. Если оптимус можно настроить так, чтобы кнопки на нем соответствовали курсорным, то задача решена - недорого, универсально, навсегда. И совсем срочно. :)

unused_name 28.11.2008 12:02

Цитата:

Сообщение от Смольный (Smolniy) (Сообщение 780217)
В Инете действительно полно примеров - более того, готовых софтов, который вы покупаете и скармливаете ему ваши странички (растры или pdf), и оно сразу работает. Цена - около 100$ (например, тот же http://www.flashpageflip.com/ )
И знаете, оно работает не только от мышки, но и от клавы, например, кнопок влево-вправо!.. Если оптимус можно настроить так, чтобы кнопки на нем соответствовали курсорным, то задача решена - недорого, универсально, навсегда. И совсем срочно. :)

Что-то я уже замучался повторять что все эти готовые софты я подробно изучил перед началом работы и что они мне не подходят по ряду причин, основная из которых - моя придирчивость к натуралистичности анимации перелистывания. В контексте выполняемой задачи мой вариант выглядит на порядок круче (и так думаю не только я), и ничего подобного, уже готового я в инете не встречал. Если интересно, на результат можно посмотреть на книжной ярмарке NON-FICTION, на первом этаже ЦДХ, на интерактивном стенде напротив гардероба :rolleyes:
В данный момент я пытаюсь довести этот продукт до определенной стадии совершенства и реализовать с его помощью свои некоторые идеи в будущем, поэтому очень надеюсь на ответы по существу. И огромное спасибо тем кто откликнулся! :)

Добавлено через 19 минут
Кстати, решение с Оптимусом было ошибочным, на нажатие он реагирует примерно раз за секунду что делает навигацию по меню неудобной.
Соответствие стрелок на клаве и клавиши оптимуса (а так-же многих других кнопок, использующихся для навигации в готовых решениях) настроить, без написания собственного плугина к этой штуке - нельзя. И менять изображение на экранчиках, в зависимости от события в листалке, тоже нельзя. Программа-конфигуратор беспощадна к ресурсам компа.
Но горящие экранчики смотрятся хорошо, определенный ВАУ-эффект они создают.

Добавлено через 22 минуты
Подскажите плиз, как можно выключить на время EventListener то?
В примере хелпа че-то совсем не понятно как removeEventListener() использовать. Или его можно не удалять а просто приостановить?

musat 28.11.2008 15:29

Например, когда начинается анимация:
Код AS3:

stage.removeEventListener(KeyboardEvent.KEY_DOWN, control);

Когда заканчивется, снова повесить листенер:
Код AS3:

stage.addEventListener(KeyboardEvent.KEY_DOWN, control);


unused_name 28.11.2008 16:23

Спасибо! Не трудно конечно было и самому догадаться, даже не знаю что меня остановило :)

RedWalter 28.11.2008 16:44

не очень хорошо обрабатывается момент, когда лист находится в верхней точке, он при этом совсем пропадает, такого практически не бывает или нужно специально постараться

unused_name 30.11.2008 18:20

Цитата:

Сообщение от RedWalter (Сообщение 780325)
не очень хорошо обрабатывается момент, когда лист находится в верхней точке, он при этом совсем пропадает, такого практически не бывает или нужно специально постараться

- это где Вы увидели? На гифе в начале темы или в ЦДХ? Да, в центральном положение листа, когда мы смотрим в торец плоскости в которой он находится, его почти не видно, но ведь так и должно быть, находится он в таком положении 1 кадр, в нем происходит смена страницы. За неимением лучшего варианта или намека в вашем сообщении на то, как этот момент улучшить - оставляю все как есть, меня пока устраивает.

RedWalter 01.12.2008 21:52

Я гиф смотрел, а что такое ЦДХ ?( центр.дом х-ка? :) Может во флеше все и более естественно смотрится. Я имел в виду, что страница обычно немного изгибается при перелистывании, поэтому при переходе справа-налево видно как бы две части листа : уменьшающуюся левую полоску (изначально лицевую сторону) и увеличивающуюся правую полоску( оборотную сторону), которая наезжает-открывается не с центальной-верхней точки перелистывания, а раньше - градусов с ~45


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

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