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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.11.2008, 20:47
unused_name вне форума Посмотреть профиль Отправить личное сообщение для unused_name Посетить домашнюю страницу unused_name Найти все сообщения от unused_name
  № 1  
Ответить с цитированием
unused_name
 
Аватар для unused_name

Регистрация: May 2006
Сообщений: 52
Question 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.
Старый 23.11.2008, 23:57
musat вне форума Посмотреть профиль Отправить личное сообщение для musat Найти все сообщения от musat
  № 2  
Ответить с цитированием
musat
 
Аватар для musat

Регистрация: Jul 2007
Адрес: Дубна, Моск.обл.
Сообщений: 108
Ну gotoAndPlay(), gotoAndStop() и т.п. и в AS3 есть.

Нажатие на кнопку делается так:
Код AS3:
// btn - имя кнопки
btn.addEventListener(MouseEvent.CLICK, onClick);
 
function onClick(e:MouseEvent):void {
    // кнопка нажата!
}
В полноэкранный режим:
Код AS3:
stage.displayState = "fullScreen";
А вообще, пользуйтесь поиском. Здесь, на форуме, можно найти все, что угодно

Старый 24.11.2008, 00:25
unused_name вне форума Посмотреть профиль Отправить личное сообщение для unused_name Посетить домашнюю страницу unused_name Найти все сообщения от unused_name
  № 3  
Ответить с цитированием
unused_name
 
Аватар для unused_name

Регистрация: May 2006
Сообщений: 52
Спасибо, продолжаю копать

Там только отлавливать надо нажатие клавиши клавиатуры, мыши у просматривующего презентацию не будет, только Оптимус.

Добавлено через 12 минут
Может имеет смысл составить такой список, с самыми часто используемыми командами из AS2 и соответсвующими им аналогами на AS3 с объяснением разницы? Или это принципиально неверный подход? До этого я часто встречал мнение о том, что дизайнерам лучше вообще не лезьть в AS3, и оставить его програмистам, но как тогда быть в подобных ситуациях? Эффекты то в новом флеше сделаны именно для дизайнеров...

Добавлено через 3 часа 44 минуты
Сделал так:

Код AS3:
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 режима: навигация по меню и перелистывание страниц:

Код AS3:
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);
Почему так не работает? Как это вообще правильно делать в AS3?


Последний раз редактировалось unused_name; 24.11.2008 в 07:07.
Старый 25.11.2008, 03:45
SamFR вне форума Посмотреть профиль Отправить личное сообщение для SamFR Посетить домашнюю страницу SamFR Найти все сообщения от SamFR
  № 4  
Ответить с цитированием
SamFR

Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
Что конкретно не работает?
А вообще, за присваивание отвечает операция "=", а не "==".

Попробуй так:

Код AS3:
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; //!!!
		}
	}
}

Старый 25.11.2008, 05:52
unused_name вне форума Посмотреть профиль Отправить личное сообщение для unused_name Посетить домашнюю страницу unused_name Найти все сообщения от unused_name
  № 5  
Ответить с цитированием
unused_name
 
Аватар для unused_name

Регистрация: May 2006
Сообщений: 52
С переключением режимов разобрался, (исправил второй if на else, и присвоение значения = ) теперь борюсь с "глобальной переменной" которая UILoader-у будет указывать какую картинку грузить из папки. Во первых почему-то не получается обратиться к экземпляру UILoader-а который внутри мувика-страницы, привычная конструкция
Код AS3:
this.page_l.loader_l.source = "pages_l/" + currentPage + ".jpg";
не работает, работает только в кадре внутри мувиклипа page_l без куска this.page_l соответственно, но оттуда не видно значиния переменной указывающей страницу currentPage. Пытаюсь создать класс global в файле global.as, как рекомендуют на всяких буржуйских сайтах - ничего не получается, выдается ошибка: 1119: Access of possibly undefined property currentPage through a reference with static type Class. Спасите кто-нибудь мой мозг...

Старый 25.11.2008, 13:53
musat вне форума Посмотреть профиль Отправить личное сообщение для musat Найти все сообщения от musat
  № 6  
Ответить с цитированием
musat
 
Аватар для musat

Регистрация: Jul 2007
Адрес: Дубна, Моск.обл.
Сообщений: 108
А где находится переменная currentPage? В клипе page_l?

Старый 25.11.2008, 14:29
unused_name вне форума Посмотреть профиль Отправить личное сообщение для unused_name Посетить домашнюю страницу unused_name Найти все сообщения от unused_name
  № 7  
Ответить с цитированием
unused_name
 
Аватар для unused_name

Регистрация: May 2006
Сообщений: 52
переменные заработали так:
Код AS3:
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 минут
Добавил:
Код AS3:
package {
 
    import flash.events.Event;
    import flash.display.MovieClip;
 
    public class mein extends MovieClip {
начал ругаться на 1120: Access of undefined property stage тут:

Код AS3:
stage.displayState="fullScreen";
stage.addEventListener(KeyboardEvent.KEY_DOWN,control);

Старый 25.11.2008, 20:13
SamFR вне форума Посмотреть профиль Отправить личное сообщение для SamFR Посетить домашнюю страницу SamFR Найти все сообщения от SamFR
  № 8  
Ответить с цитированием
SamFR

Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
Если этот код находится в твоём классе mein, то ругаться не должен, потому что он у тебя наследует от MovieClip-а, а в нём это свойство определено.
А если не в mein-е, то перенеси его туда, в конструктор.

Старый 25.11.2008, 20:42
darksranger вне форума Посмотреть профиль Отправить личное сообщение для darksranger Посетить домашнюю страницу darksranger Найти все сообщения от darksranger
  № 9  
Ответить с цитированием
darksranger
 
Аватар для darksranger

блогер
Регистрация: Jun 2007
Адрес: in sankt - peterburg
Сообщений: 787
Записей в блоге: 2
Отправить сообщение для darksranger с помощью ICQ
а чем не угодил pageFlip для as2 ? сурсы если порыть найти можно, даже у нас на форуме кто то кидал, анимация там выглядит правдоподобно
если не устраивает pageFlip, есть другой путь

качаем five3D as2 и делаем на его основе то что нужно
__________________
на каком языке вы пишите?
а на каком нужно?

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

Регистрация: May 2006
Сообщений: 52
Цитата:
Сообщение от SamFR Посмотреть сообщение
Если этот код находится в твоём классе mein, то ругаться не должен, потому что он у тебя наследует от MovieClip-а, а в нём это свойство определено.
А если не в mein-е, то перенеси его туда, в конструктор.
А конструктор это главный класс куда загружаются все остальные, что-то типа root? У меня этот код находится в файле mein.as, и класс mein указан в поле инспектора свойств документа, но если его поместить в первый кадр на таймлайне - он работает.
А уровень вложенности клипов (классов) в AS3 указывается каким-то принципиально новым способом? Тут надо копать что-то типа parent - child?

Цитата:
Сообщение от darksranger Посмотреть сообщение
а чем не угодил pageFlip для as2 ? сурсы если порыть найти можно, даже у нас на форуме кто то кидал, анимация там выглядит правдоподобно
если не устраивает pageFlip, есть другой путь

качаем five3D as2 и делаем на его основе то что нужно
pageFlip (в его реализации то как-раз проблем нет) не угодил тем, что весь прикол в нем в возможности перелистывать страницы мышкой, а у меня всего три кнопки на контроллере и никаких мышей. Если делать перелистывание по нажатию кнопки - выглядит оно ненатурально, нет перспективных искажений и страница кажется какой-то резиновой, выбранный мной способ гораздо красивее

five3D - круто, спасибо, но мне уже поздно отступать, с ним я думаю попозже разберусь. Да и просто интересно в AS3 разобраться, буду редким дизайнером знающим его

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

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

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


 


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


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