|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: May 2006
Сообщений: 52
|
Dir-галерея книга с перелистыванием страниц
1. Задача: сделать презентацию книги, в виде, собственно, этой самой книги (около 400 страниц), где страницы будут перелистываться с соответствующей аниманцией, переход к следующей странице будет осуществляться нажатием кнопки (для упарвления будет использоваться лебедевская трехкнопочная клавиатура Оптимус, с экранчиками). В презентации будет одно меню-оглавление, доступное так-же по нажатию на одну из клавиш контроллера. На первый взгляд все довольно просто. В инете куча примеров с анимацией перелистывания и основанных на этом галерей, но, все они хороши для перелистывания с помошью мыши, без мыши анимация перелистывания выглядит, мягко говоря, простовато, нет перспективных искажений, ну и вообще довольно ненатурально. Исходя из вышесказанного, появилась мысль сделать все иначе.
2. В флеше CS4 появилась замечательная возможность вертеть мувики в 3Д, что позволило мне сделать довольно красивую анимацию перелистывания (650 Kb): http://zeroiq.ru/book.gif тут видно конечно плоховато, но когда все доделаю - выложу исходник. Там действительно выглядит все весьма хорошо, по сравнению с обычным перелистыванием. Книга нарисована в максе + векторная маска по форме страниц в перелистывающихся мувиках. На каждую страницу можно ставить любой мувик, это понятно. Но поддержка 3Д есть только в случае если документ во флеше создается с применением AS3... Вот тут начинаются мои проблемы, я этот 3-й экшн-скрипт пока не понимаю вообще. Стандартное нытье - я дизайнер а не програмист, понимаю что все должно быть просто но с какой стороны подойти не знаю. Пытался сделать все загрузкой в AS2 swf-ку мувиков с перелистыванием, но тогда остается непонятным как ими тогда управлять. Все уроки AS3 для начинающих начинаются с примерно одного и того-же: вывода надписи "Hello world" и т.п. Это мне не поможет, времени на изучение языка поэтапно у меня просто нет. Новый хелп меня меня только сбивает с толку. И вот, собственно, мой вопрос: может ли кто-то подсказать как просто сделать несчастную кнопку перелистывания, как заставить рут перейти к определенному кадру, как заставить флэшку развернуться на весь экран, как на страницы грузить картинки из папки по порядку и т.д. Есть ли в AS3 какой-то простой аналог простейших команд из AS2? Прошу сильно не глумиться над вопросами, поверьте, я не писал бы все это если бы не нужно было все это сделать ОЧЕНЬ срочно, и если бы я уже не сломал голову в попытках разобраться самостоятельно. Последний раз редактировалось unused_name; 26.11.2008 в 05:41. |
|
|||||
Регистрация: Jul 2007
Адрес: Дубна, Моск.обл.
Сообщений: 108
|
Ну gotoAndPlay(), gotoAndStop() и т.п. и в AS3 есть.
Нажатие на кнопку делается так: // btn - имя кнопки btn.addEventListener(MouseEvent.CLICK, onClick); function onClick(e:MouseEvent):void { // кнопка нажата! } А вообще, пользуйтесь поиском. Здесь, на форуме, можно найти все, что угодно |
|
|||||
Регистрация: May 2006
Сообщений: 52
|
Спасибо, продолжаю копать
Там только отлавливать надо нажатие клавиши клавиатуры, мыши у просматривующего презентацию не будет, только Оптимус. Добавлено через 12 минут Может имеет смысл составить такой список, с самыми часто используемыми командами из AS2 и соответсвующими им аналогами на AS3 с объяснением разницы? Или это принципиально неверный подход? До этого я часто встречал мнение о том, что дизайнерам лучше вообще не лезьть в AS3, и оставить его програмистам, но как тогда быть в подобных ситуациях? Эффекты то в новом флеше сделаны именно для дизайнеров... Добавлено через 3 часа 44 минуты Сделал так: import flash.events.KeyboardEvent; function pageFlip(event:KeyboardEvent):void { if (event.keyCode==Keyboard.INSERT) { gotoAndPlay(2); } if (event.keyCode==Keyboard.BACKSPACE) { gotoAndPlay(3); } if (event.keyCode==Keyboard.ENTER) { gotoAndPlay(4); } } stage.addEventListener(KeyboardEvent.KEY_DOWN,pageFlip); Добавлено через 17 часов 22 минуты Теперь пытаюсь сделать переключение кнопок в 2 режима: навигация по меню и перелистывание страниц: import flash.display.Stage; stage.displayState="fullScreen"; var showMenu = false; // - эта переменная должна указывать какой именно сценарий навигации использовать. import flash.events.KeyboardEvent; function control(event:KeyboardEvent):void { if (showMenu==false) { // меню выключено, кнопки управляют перелистыванием страниц. if (event.keyCode==Keyboard.INSERT) { gotoAndPlay(2); } if (event.keyCode==Keyboard.BACKSPACE) { play(); } if (event.keyCode==Keyboard.ENTER) { this.menu1.gotoAndStop(2); // Меню становится видимым. showMenu==true; // Переключение в режим выбора пункта содержания. Кнопки должны перебирать пункты меню. } } if (showMenu==true) { // меню включено if (event.keyCode==Keyboard.INSERT) { this.menu1.play(); } if (event.keyCode==Keyboard.BACKSPACE) { play(); } if (event.keyCode==Keyboard.ENTER) { this.menu1.gotoAndStop(1); showMenu==false; // Выбор нужного пункта, переключение в режим пролистывания. } } } stage.addEventListener(KeyboardEvent.KEY_DOWN,control); Последний раз редактировалось unused_name; 24.11.2008 в 07:07. |
|
|||||
Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
|
Что конкретно не работает?
А вообще, за присваивание отвечает операция "=", а не "==". Попробуй так: import flash.display.Stage; import flash.events.KeyboardEvent; var showMenu:Boolean = false; stage.displayState = 'fullScreen'; stage.addEventListener(KeyboardEvent.KEY_DOWN, control); function control(e:KeyboardEvent):void{ if(!showMenu){ if(e.keyCode == Keyboard.INSERT){ gotoAndPlay(2); }else if(e.keyCode == Keyboard.BACKSPACE){ play(); }else if(e.keyCode == Keyboard.ENTER){ this.menu1.gotoAndStop(2); showMenu = true; //!!! } }else{ if(e.keyCode == Keyboard.INSERT){ this.menu1.play(); }else if(e.keyCode == Keyboard.BACKSPACE){ play(); }else if(e.keyCode == Keyboard.ENTER){ this.menu1.gotoAndStop(1); showMenu = false; //!!! } } } |
|
|||||
Регистрация: May 2006
Сообщений: 52
|
С переключением режимов разобрался, (исправил второй if на else, и присвоение значения = ) теперь борюсь с "глобальной переменной" которая UILoader-у будет указывать какую картинку грузить из папки. Во первых почему-то не получается обратиться к экземпляру UILoader-а который внутри мувика-страницы, привычная конструкция
не работает, работает только в кадре внутри мувиклипа page_l без куска this.page_l соответственно, но оттуда не видно значиния переменной указывающей страницу currentPage. Пытаюсь создать класс global в файле global.as, как рекомендуют на всяких буржуйских сайтах - ничего не получается, выдается ошибка: 1119: Access of possibly undefined property currentPage through a reference with static type Class. Спасите кто-нибудь мой мозг... |
|
|||||
Регистрация: Jul 2007
Адрес: Дубна, Моск.обл.
Сообщений: 108
|
А где находится переменная currentPage? В клипе page_l?
|
|
|||||
Регистрация: May 2006
Сообщений: 52
|
переменные заработали так:
package { public class global { public static var currentPage:int; global.currentPage = 2; } } Но отсюда сразу следующая проблема: 5007: An ActionScript file must have at least one externally visible definition. - это возникает при переносе кода в, как я понимаю, главный класс mein.as, имя которого я пишу в настройках документа. Что там надо добавить чтоб был "хоть один externally visible definition"? Добавлено через 19 минут Добавил: package { import flash.events.Event; import flash.display.MovieClip; public class mein extends MovieClip { |
|
|||||
Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
|
Если этот код находится в твоём классе mein, то ругаться не должен, потому что он у тебя наследует от MovieClip-а, а в нём это свойство определено.
А если не в mein-е, то перенеси его туда, в конструктор. |
|
|||||
а чем не угодил pageFlip для as2 ? сурсы если порыть найти можно, даже у нас на форуме кто то кидал, анимация там выглядит правдоподобно
если не устраивает pageFlip, есть другой путь качаем five3D as2 и делаем на его основе то что нужно
__________________
на каком языке вы пишите? а на каком нужно? |
|
|||||
Регистрация: May 2006
Сообщений: 52
|
Цитата:
А уровень вложенности клипов (классов) в AS3 указывается каким-то принципиально новым способом? Тут надо копать что-то типа parent - child? Цитата:
five3D - круто, спасибо, но мне уже поздно отступать, с ним я думаю попозже разберусь. Да и просто интересно в AS3 разобраться, буду редким дизайнером знающим его |
Часовой пояс GMT +4, время: 16:19. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|