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

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

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

Регистрация: May 2004
Адрес: Россия
Сообщений: 175
Attention Автоматическое проигрывание клипа.

Задача у меня не простая!
Имеются 8 кнопок, при нажатии на которые происходит перемещение в таймлайне (каждой кнопке - свой кадр, допустим). Кнопки имеют анимацию на втором кадре (при наведении). Надо сделать так, чтобы автоматически как бы они "нажимались" в произвольном порядке, соответственно происходили все сопутствующие действия, то есть кадр кнопки становился 2-м, ролик переходил на соответствующий данной кнопке кадр.
Причем, после того, как курсор окажется в определенном месте сцены - это автоматическое проигрывание останавливалось, при убирании курсора с того места - опять продолжалось. И еще: при нажатии на любую из кнопок, попадаешь на соответствующий кадр, и после прошествия, ну скажем, 20 секунд, (если при этом курсор находится не на том определенном месте на котором автоматическое проигрывание останавливливается) опять начинается хаотичное автоматическое проигрывание ролика.

Фух... Такого не где не встречал! Помогите, пожалуйста...

Старый 23.04.2006, 03:12
Olejan вне форума Посмотреть профиль Отправить личное сообщение для Olejan Найти все сообщения от Olejan
  № 2  
Ответить с цитированием
Olejan

Регистрация: May 2004
Адрес: Россия
Сообщений: 175
Христос Воскресье!
Помогите, пожалуйста...
P.S. прошу не отвечать по такому удобному случаю: "Бог - помощь!"
P.P.S. Я бы может так и ответил бы... Просто случай очень подходящий - пасха же...
P.P.P.S. И про то, что в воскресенье ничего нельзя делать - тоже прошу не упоминать!
Надеюсь на человечность!

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

Регистрация: Jun 2005
Адрес: в Питере
Сообщений: 981
Кнопки сами нажиматься не могут, поэтому надо в качестве кнопок использовать клипы попробуй сделать так. В библиотеке один клип, имеющий как минимум три кадра, с метками over , down и out, и stop() в кадре out, чтобы клипы не проигрывались, Также в библиотеке должон быть клип с нарисованной нужной областью, в основной временной шкале должен быть ОДИН кадр куда надо поместить клип с кадрами,что будут сменяться при нажатии кнопок, и вот этот код:
Код:
var wdth = 100;//ширина клипа кнопки в пикселах
var yCoor= 50;//y координата ряда с кнопками
var numbr=8; //количество кнопок и кадров
var Interv=500;//интервал смены кадров в миллисек
var zader=20000;//задержка скажем в 20 сек
//---------------------------------------------
var rolik=_root.someClip;
                //ролик с n кадрами(по кол-ву кнопок)
               //которые должны сменяться
			  //в соответсвии с нажатой кнопкой
//---------------------------------------------
var hit='oblast';//идентификатор клипа (в библиотеке),
                //содержащего область, попадя на которую,
			   //автоматическое проигрывание 
			  //прекращается.
//---------------------------------------------
var xHit=0;
var yHit=0;//координаты клипа области
//---------------------------------------------
var button='clip_knopka';//идентификатор клипа-кнопки
                        //(в библиотеке)
//---------------------------------------------
function over() {
	this.gotoAndStop('over');
}
function out() {
	this.gotoAndStop('out');
}
function down() {
	this.gotoAndStop('down');
	var c=this._parent;
	c.flag=false;
	c.rolik.gotoAndStop(this.i);
	c.Int=setInterval(c.zaderFunc,50,getTimer()+c.zader);
	
}
function zaderFunc(startTime){
	if(startTime<getTimer()){
		flag=true;
		clearInterval(Int);
		
	}
}
var c,rand,lastB;
for (var i = 0; i<numbr; i++) {
	attachMovie(button, 'b_'+i, i, {_x:i*wdth,_y:yCoor});
	c = this['b_'+i];
	с.i=i;
	c.onPress = down;
	c.onRollOut = clip_knopka.onReleaseOutside=out;
	c.onRollOver = clip_knopka.onRelease=out;
}
attachMovie(hit,hit,this.getNextHighestDepth(),{_x:xHit,_y:yHit,_alpha:1});
nextStep=getTimer();
var flag=true;
this.onEnterFrame=function(){
	if (!this[hit].hitTest(_xmouse,_ymouse,true)&&(nextStep<getTimer())&&flag){
		nextStep=getTimer()+Interv;;
		rand=random(numbr);
		trace(rand);
		rolik.gotoAndStop(rand);
		lastB.gotoAndStop('out');
		this['b_'+rand].gotoAndStop('down');
		lastB=this['b_'+rand];
	}
}
__________________
Делай всё быстро, но не торопись!.._/*o|o*\_.


Последний раз редактировалось Madasan; 23.04.2006 в 06:14.
Старый 23.04.2006, 12:51
Olejan вне форума Посмотреть профиль Отправить личное сообщение для Olejan Найти все сообщения от Olejan
  № 4  
Ответить с цитированием
Olejan

Регистрация: May 2004
Адрес: Россия
Сообщений: 175
Attention БОЛЬШОЕ СПАСИБО!!!

var wdth = 100;//ширина клипа кнопки в пикселах
var yCoor= 50;//y координата ряда с кнопкамиvar numbr=9; //количество кнопок и кадров
var Interv=500;//интервал смены кадров в миллисек
var zader=20000;//задержка скажем в 20 сек
//---------------------------------------------
var rolik=_root.someClip;
//ролик с n кадрами(по кол-ву кнопок)
//которые должны сменяться
//в соответсвии с нажатой кнопкой
//---------------------------------------------
var hit='oblast';//идентификатор клипа (в библиотеке),
//содержащего область, попадя на которую,
//автоматическое проигрывание
//прекращается.
//---------------------------------------------
var xHit=0;
var yHit=0;//координаты клипа области
//---------------------------------------------
var button='clip_knopka';//идентификатор клипа-кнопки
//(в библиотеке)
//---------------------------------------------
function over() {
this.gotoAndStop('over');
}
function out() {
this.gotoAndStop('out');
}
function down() {
this.gotoAndStop('down');
var c=this._parent;
c.flag=false;
c.rolik.gotoAndStop(this.i);
c.Int=setInterval(c.zaderFunc,50,getTimer()+c.zader);

}
function zaderFunc(startTime){
if(startTime<getTimer()){
flag=true;
clearInterval(Int);

}
}
var c,rand,lastB;
for (var i = 1; i<numbr; i++) {
attachMovie(button, 'b_'+i, i, {_x:i*wdth,_y:yCoor});
c = this['b_'+i];
с.i=i;
c.onPress = down;
c.onRollOut = clip_knopka.onReleaseOutside=out;
c.onRollOver = clip_knopka.onRelease=over;
}
attachMovie(hit,hit,this.getNextHighestDepth(),{_x:xHit,_y:yHit,_alpha:1});
nextStep=getTimer();
var flag=true;
this.onEnterFrame=function(){
if (!this[hit].hitTest(_xmouse,_ymouse,true)&&(nextStep<getTimer())&&flag){
nextStep=getTimer()+Interv;;
rand=random(numbr);
trace(rand);
rolik.gotoAndStop(rand);
lastB.gotoAndStop('out');
this['b_'+rand].gotoAndStop('down');
lastB=this['b_'+rand];
}
}


Пояснения по цветам:
1. Желтым выделено то, в чем так я не смог разобраться;
2. Красным - то, что переделал;

Кроме того:
На нажатия на кнопки, мувик someClip не реагирует. Не понимаю почему...

Прилагается мой FLA-файл.
Вложения
Тип файла: rar auto_play.rar (8.3 Кб, 50 просмотров)

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

Регистрация: Jun 2005
Адрес: в Питере
Сообщений: 981
Цитата:
Сообщение от Olejan
На нажатия на кнопки, мувик someClip не реагирует. Не понимаю почему...
Проверь, присвоено ли имя someClip в панели свойств у твоего мувика, он в отличии от остальных клипов должен помещаться на сцену вручную, хотя можно его так же вызвать при помощи attachMovie, но тогда сразу после вызова нужно присвоить ссылку на него нужной переменной rolik=someClip.
И вот еще ошибку нашел, вместо rand=random(numbr) нужно написать rand=random(numbr) +1. (разберись почему )
__________________
Делай всё быстро, но не торопись!.._/*o|o*\_.


Последний раз редактировалось Madasan; 23.04.2006 в 13:58.
Старый 23.04.2006, 13:20
Madasan вне форума Посмотреть профиль Отправить личное сообщение для Madasan Найти все сообщения от Madasan
  № 6  
Ответить с цитированием
Madasan
 
Аватар для Madasan

Регистрация: Jun 2005
Адрес: в Питере
Сообщений: 981
Если твои кнопки располагаются вряд по горизонтали, то
wdth - это шаг, промежуток через который будут выстраиваться твои кнопки, соответственно - это ширина клипа-кнопки, плюс промежуток между двумя кнопками(если надо) , а yCoor - это вертикальная координата ряда с кнопками.
Чтобы определить область, наводя на которую курсор, кадры перестают нажиматься, надо нарисовать эту область (форма с заливкой) и преобразовать в клип, а в свойствах этого клипа (в библиотеке) надо присвоить идентификатор oblast. Так же и с кнопками, в этом примере кнопка одна, она не помещается на сцену вручную, а вызывается из библиотеки, при помощи attachMovie, соответственно одна должна иметь идентификатор (Export for action script), в данном случае это clip_knopka. Клип область так же не помещается на сцену вручную а тоже вызывается из библиотеки на сцену в точку с координатами:
var xHit=0;
var yHit=0;
Это типа пример, и можешь изменять все как тебе необходимо, и при этом отвечать на вопросы о корректности работы скрипта старайся себе сам
__________________
Делай всё быстро, но не торопись!.._/*o|o*\_.

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

Регистрация: Jun 2005
Адрес: в Питере
Сообщений: 981

Цитата:
Сообщение от Madasan
Это типа пример, и можешь изменять все как тебе необходимо, и при этом отвечать на вопросы о корректности работы скрипта старайся себе сам
__________________
Делай всё быстро, но не торопись!.._/*o|o*\_.

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

Регистрация: Jun 2005
Адрес: в Питере
Сообщений: 981
Код:
var hit='oblast'
Вот тут мы присваиваем переменной идентификатор, под которым клип значиться в библиотеке(не имя, а идентификатор в графе Export for Action Script)

Код:
attachMovie(hit,hit,this.getNextHighestDepth(),{_x:xHit,_y:yHit,_alpha:1});
А это мы помещаем этот мувик на сцену, в точку с координатами:xHit и yHit, и делаем его прозрачным (_alpha:1 - если не нужно делать прозрачным то это можно убрать)

Код:
this[hit].hitTest(_xmouse,_ymouse,true)
А эта строчка проверяет, не находиться ли курсор мыши над областью клипа. Если находиться то возвращается truе, если нет, то false, знак '!' меняет возвращаемое значение на противоположное.
Но если обязательно надо помещать эту область на сцену вручную, то поместив его на сцену, в свойствах клипа надо присвоить ему имя, и обращаться к нему по имени, то есть вместо this[hit] надо писать имя клипа. Все просто.
__________________
Делай всё быстро, но не торопись!.._/*o|o*\_.

Старый 25.04.2006, 00:05
дядя Джо вне форума Посмотреть профиль Отправить личное сообщение для дядя Джо Найти все сообщения от дядя Джо
  № 9  
Ответить с цитированием
дядя Джо
 
Аватар для дядя Джо

Регистрация: Jan 2006
Адрес: Kremlin wall
Сообщений: 95
Товарищ, чем тратить время на бессмысленные посты, лучше откройте и почитайте руководство по Action Script. То, что вы тут написали, говорит о том, что вы не хотите ничего сами изучать, а только приставать ко всем с глупыми вопросами. Прочитайте правила использования метода hitTest и оператора =. И отчитайтесь о проделанной работе! Только после этого будете иметь полное право задавать вопросы на этом форуме!
__________________
Жить стало лучше, жить стало веселей!


Последний раз редактировалось дядя Джо; 25.04.2006 в 00:09.
Старый 25.04.2006, 00:32
дядя Джо вне форума Посмотреть профиль Отправить личное сообщение для дядя Джо Найти все сообщения от дядя Джо
  № 10  
Ответить с цитированием
дядя Джо
 
Аватар для дядя Джо

Регистрация: Jan 2006
Адрес: Kremlin wall
Сообщений: 95
А что вы у меня спрашиваете, я вам не компилятор. Только компилятор сможет вынести окнчательный вердикт. Скомпилированный swf фильм будет вам ответом. А если ваш ответ - это весь отчет о проделанной работе, то могу вам на это следующее - мы в свое время таких отправляли в лагеря, и там они быстро понимали как надо работать!
__________________
Жить стало лучше, жить стало веселей!

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

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

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


 


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


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