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

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

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

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
Вот попробовал сделать по тем советам что получил. Вроде бы работает корректно, посмотрите пожлуйста все ли верно и может можно что нибудь оптимизировать. В частности использование аттачмуви вместо дубликейт.
Код AS1/AS2:
import mx.transitions.Tween;
import mx.transitions.easing.*;
// массив с данными
var my_array = ['Angelina Jolie', 'Charlize Theron', 'Памелла Андерсон', 'Бритни гг'];
var clip_array:Array = new Array();  // будущий массив кнопок
var total_j:Number;
var i:Number = 0;
var j:Number = 0;
var offset_j:Number = 0; 
but._visible = false;             // танец с бубном ;) Итак что же мы получаем, при дубликации обьекта, исходный то у нас тоже отображается, что не есть гут. Поэтому прячем его.
 
function whois(j){
	// обращение к данным из массива по ключу
	trace('Today I love ' + my_array[j]);	
}
function create_buttons(j)   // cсоздаем кнопки, не знаю как это назвать (j)
{
	clip_array[j] = but.duplicateMovieClip("but"+j, j);  // присваиваем массиву значения кнопок
		clip_array[j]._visible = true;   // танец с бубном часть 2 ;) А затем показываем уже дублицированный, конечно можно было аттачить, но я пока этим не пользуюсь.
		clip_array[j].onRelease = function() 
		{
			for ( i = j; i  < 4; i++) 
			{
			if(!this.flag){	
				var tween_1alphadown:Tween = new Tween(clip_array[i + 1], "_alpha", Strong.easeOut, 0, 100, 1, true);
				}
				 else{ 
				var tween_1alphaup:Tween = new Tween(clip_array[i + 1], "_alpha", Strong.easeOut, 0, 100, 1, true);
				}
				this.flag = !this.flag;
			}
		whois(this.mark);  // ваш пример
		}
		if (j>0) {  clip_array[j]._y = offset_j;      }     // расчитывем расстояние до след раздела
			else {	clip_array[j]._y = j * offset_j;  }
 
		offset_j = clip_array[j]._y + clip_array[j]._height + 5;   // 5 это межкнопочное расстояние
}
 
for( j = 0; j < 4; j++)
	{
		create_buttons(j) // сделал функцию как говорили
	}
На рабочем столе (имею в виду рабочий стол флеша, а не винды) есть прямоугольник под именем but и инстанс нейм тоже but/


Последний раз редактировалось nOobCrafter; 16.12.2008 в 16:23.
Старый 16.12.2008, 17:12
Mnilionic вне форума Посмотреть профиль Отправить личное сообщение для Mnilionic Найти все сообщения от Mnilionic
  № 12  
Ответить с цитированием
Mnilionic
 
Аватар для Mnilionic

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
удаляем с рабочего стола "прямоугольник".
в библиотеке ставим ему linkage Property:
галка на "Экспорт фо экшн скрипт" и на "Экспорт ин фёст фрейм"
в поле id вписываем "but_in_lib"

Код AS1/AS2:
import mx.transitions.Tween;
import mx.transitions.easing.*;
// массив с данными
var my_array = ['Angelina Jolie', 'Charlize Theron', 'Памелла Андерсон', 'Бритни гг'];
var clip_array:Array = new Array();  // будущий массив кнопок
var total_j:Number = 4;
var btns_space:Number = 5; // межкнопочное расстояние
 
function whois(j){
	// обращение к данным из массива по ключу
	trace('Today I love ' + my_array[j]);	
}
 
// cсоздаем кнопки, присваеиваем события и прочие свойства.
function create_buttons(j){
	// аттачим клип (кнопку) на сцену 
	var btn = this.attachMovie('but_in_lib', 'but_' + j, j);
	//и сохраняем ссылку в массив
	clip_array[j] = btn;
 
	// расчитывем расстояние до след раздела
	btn._y = j * (btn._height + btns_space);
	btn._x = 200;  
	btn.j = j;// запоминаем в кнопке её номер
	btn.flag = false // в функции события он у вас используется
	btn.onRelease = btns_on_release;
}
 
// описываем событие
function btns_on_release(){
	for( var i = this.j; i < total_j; i++) {
		if(!this.flag){	// логика этих твинов мне не понятна...
			var tween_1alphadown:Tween = new Tween(clip_array[i + 1], "_alpha", Strong.easeOut, 0, 100, 1, true);
		}else{ 
			var tween_1alphaup:Tween = new Tween(clip_array[i + 1], "_alpha", Strong.easeOut, 0, 100, 1, true);
		}
		this.flag = !this.flag;
	}
	whois(this.j);  // ваш пример
}
 
 
 
// запускаем создание кнопок
for( var j = 0; j < total_j; j++ ){
	create_buttons(j) // сделал функцию как говорили
}

Старый 16.12.2008, 17:29
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 13  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
Спс.. ну эти твины меняют прозраность тех клипов что ниже нажатой кнопки, в оригинале мне их надо смещать, поэтому вместо альфы будет ._y всего то. А это просто для наглядности.
Код AS1/AS2:
btn.flag = false // в функции события он у вас используется
Вот еще вопрос, надо ли нам указывать значение флага заранее. Ведь условие происходит корректно, сразу значение undefined что неравно true, и выполнеятся прописанное условие, в конце функции значение флага принимает true.

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

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
ну раз уж вы используете объявление переменных и их типизацию, почему не объявить флаг
лично для меня удобней и наглядней.

Добавлено через 3 минуты
чтоб не выходить за пределы массива.
Код:
function btns_on_release(){
	for( var i = this.j; i < total_j - 1; i++) {
		var btn = clip_array[i + 1]; // идальше работать напрямую с ссылкой, а не с масивом
		...


Последний раз редактировалось Mnilionic; 16.12.2008 в 17:50.
Старый 16.12.2008, 18:14
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 15  
Ответить с цитированием
nOobCrafter

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

Добавлено через 21 час 39 минут
Блин, дошло дело до использования функций перемещения и открылся еще один косяк. При простом трейсе i все ок, все как надо, но стоит добавить флаги как мы какую то полную ерунду получаем. Проблема вылечилась путем изменения порядка с:
Код AS1/AS2:
function btns_on_release(){
	for( var i = this.j; i < total_j - 1; i++) {
                 if(!this.flag){
                     trace(i)
                 }
                 this.flag = !this.flag;
           }
}
на:
Код AS1/AS2:
function btns_on_release(){
           if(!this.flag){
                 for( var i = this.j; i < total_j - 1; i++) {
                     trace(i)
                 }
           }
           this.flag = !this.flag;
}
Может если кому потом надо будет.

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

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

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


 


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


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