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

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

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

Регистрация: Jun 2004
Адрес: Москва
Сообщений: 1,667
По умолчанию Алгоритм смены свойств для нескольких мувиклипов

ну собственно заголовок и есть вопрос.
Я вот что-то сообразить не могу...
Подробнее - есть несколько текстовых полей в которых должен меняться текст - таким образом появляется одни текст, с alpha=0 до 100 и обратно уходит в альфу
с некоторого момента его появления например alpha=30 начинает в другом текстовом поле появляться другой текст
ну и т.д. т.е. единорвременно должно быть несколько текстов на сцене
сам текст береться из массива
поля не могу создавать программно если что... т.е. могу но думаю что скорее всего не стоит...

Старый 17.10.2006, 14:28
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Ну если не можешь программно, делай ручками…
Я не понимаю твоего вопроса.

Старый 17.10.2006, 14:45
Kinsler вне форума Посмотреть профиль Отправить личное сообщение для Kinsler Найти все сообщения от Kinsler
  № 3  
Ответить с цитированием
Kinsler
 
Аватар для Kinsler

Регистрация: Jun 2004
Адрес: Москва
Сообщений: 1,667
ручками плохо, потому что их много...
ну смотри есть положим 10 текстовых полей с именами tf1 ... tf10
положим в onEnterFrame
я запускаю смену альфы для первого как я описал от 0 до 100%
мне нужно через некоторое время запустить у второго, затем третьего
я не врубаюсь как всем сразу запустить такое
т.е. понятно что можно написать к примеру
i++;
tf1._alpha = i;
.
.
.
tfN._alpha = i - 100;

но это как то тупо и некрасиво....

Старый 17.10.2006, 15:00
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Циклом побегать? Поставить проверку на _alpha?
В чём проблема-то? for .. in на худой конец.

Старый 18.10.2006, 12:08
Kinsler вне форума Посмотреть профиль Отправить личное сообщение для Kinsler Найти все сообщения от Kinsler
  № 5  
Ответить с цитированием
Kinsler
 
Аватар для Kinsler

Регистрация: Jun 2004
Адрес: Москва
Сообщений: 1,667
решил вчера таки
тоже правда через ж...у
хитрую функцию с зависимостью от номера мувика написал, имеетца в виду математическую

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

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Цитата:
я запускаю смену альфы для первого как я описал от 0 до 100%
мне нужно через некоторое время запустить у второго, затем третьего
я не врубаюсь как всем сразу запустить такое
Вариант 1: "каждый знает соседа"

добаляеш свойство, cсылающееся на следующего в цепочке.
Говоришь "первый.прячься();" В функции прячься() стоит проверка на какоето условие. Например так:
если(пора)this.сосед.прячься();
"сосед" в данном случае - ссылка на объект.

Вариант 2 похож, назовем его "каждый знает имя соседа".
Каждое экземпляр прописан в доме. "сосед" в данном случае - строка. Код примерно такой:
если (пора) дом-где-мы-прописаны[this.сосед].прячься();

Вариант 3 "у каждого по-разному работают часы". Выставляем каждому временной сдвиг и сажаем всем одновременно разный timeOut на вызов этого "прячься"

Старый 19.10.2006, 07:25
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 7  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
я кажется понял, что же нужно сделать...
как по мне - саое простое решение - запускать 1 онентерфрейм и в switch'e проверять что же именно нужно сделать. Примерно так:
Код:
var toDo:Number=0;
_root.onEnterFrame = function(){
switch(toDo){
case 1:
myFunction1();
break;
case 2:
myFunction2();
break;
case 3:
myFunction3();
break;
}
}
Каждая функция может изменить значение переменной toDo на какое-нибудь другое, так, что после ее выволнения будет запущена следующая.
Либо значение toDo можно менять в онЭнтерФрейме - тогда последовательно заполняя варианты switch'a получится своего рода сценарий типа: сейчас играем кадр №1, значит нужно запустить функцию №1, дошли до кадра №21 - запускаем следующую функцию, и так на сколько фантазии хватит =)
Еще вариант - сложить все функции в один массив и вызывать их по номеру. Т.е. любая возможная коллизия сопровождается сменой текущего индекса массива, откуда и нужно взять функцию.
Но, вообще-то было бы лучше видеть пример, для чего это нужно. А вдруг там всего 2-3 функции и можно все сделать простыми if(){}else{}...
__________________
Hell is the possibility of sanity

Старый 19.10.2006, 08:52
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 8  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Можно и так, только неизящно. Энтерфрейм тут тож вроде не причем. Лучше код на мувик вешать, примерно так:
Код:
//где-то на таймлайне
fuction fadeOut(){
  clearInterval(this.fadeOutInterval);
 if(this._alpha > 0){
   this._alpha -= 2;
   this.fadeOutInterval = setInterval(fadeOut, 20);
 }else{
   this._visible = false;
 }
 if(this._alpha >30 && this._alpha<= 32){
  //пора дергать соседа
   this.brother.fadeOut();
}
}
attachMovie("clip1", "clip1", 1, {textId:0, fadeOut:fadeOut });
attachMovie("clip2", "clip2", 2, {textId:0, fadeOut:fadeOut });
attachMovie("clip3", "clip3", 3, {textId:0, fadeOut:fadeOut });
clip1.brother = clip2;
clip2.brother = clip3;
clip3.brother = clip1;
//в нужный момент: 
clip1.fadeOut();
Имеется в виду, что в руте массив textArray с текстами, у каждого мувика свой textId - ключ этого массива, чтоб текс подгрузить в нужный момент, и у каждого мувика есть brother - ссылка на другой мувик. Код может варьироваться в зависимости от версии AS, но идея понятна.
Точно так же пишется fadeIn(). Все должно работать.
Цитата:
хитрую функцию с зависимостью от номера мувика написал, имеетца в виду математическую
Правильный ход мыслей, только гибче сажать в мувик переменную и ее подставлять в функцию.


Последний раз редактировалось Kikasso; 19.10.2006 в 09:27.
Старый 19.10.2006, 10:27
motor4ik вне форума Посмотреть профиль Отправить личное сообщение для motor4ik Посетить домашнюю страницу motor4ik Найти все сообщения от motor4ik
  № 9  
Ответить с цитированием
motor4ik
 
Аватар для motor4ik

Регистрация: Jun 2005
Адрес: Moscow - immigrate from Volgodonsk
Сообщений: 2,534
а если их много? лучше братьев именовать по очереди да и все..1.2.3.4 итд
просто поставить условие если последний то запускать первый вот и все, а так прибавлять единицу ))

Старый 19.10.2006, 19:01
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 10  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
2 motor4ik: Все прекрасно будет работать, пока нам не потребуется изменить порядок.
Допустим, у нас открыт 5-й клип. Приложение интерактивно. Юзер кликнул мышкой на кнопке, и его интересует 10-й клип. Я преспокойненько назначаю 5-му следующего
clip5.brother = clip10;
и запускаю тот же код, а что ты сделаешь?
P.S. немножко неправильно, как я могу знать что открыт именно 5-й? Значит надо чтобы клип открывшись говорил такую фразу
_root.activatedClip = this;
тогда код на кнопке:
_root.activatedClip.brother = clip10;
_root.activatedClip.fadeOut();
P.P.S. activatedClip лучше чтобы был строкой, тогда за ним можно будет нормально watch`ить и автоматически запускать смену клипа.

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

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

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


 


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


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