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

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

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

Регистрация: Jul 2008
Сообщений: 35
По умолчанию Как правильно сделать навигацию по сайту? Кнопочки...

Всем привет! Никак не могу придумать как сделать правильно навигацию на сайте.
У меня есть несколько кнопок при нажатии на одну из них кнопка становится неактивна, если нажимаю другую кнопка неактивная кнопка становится активной а нажатая кнопка активной.
Гугл расщедрился сегодня вот таким примером : http://www.republicofcode.com/tutori...isablebuttons/
Это практически то что надо, но хотелось бы весь код хранить в отдельном файле и не прописывать в каждом мувике что нужно включать и выключать. С отключением мувика проблем нет, а вот как включить обратно не придумаю=( Подкиньте идейку пожалуйста.

Вот то что сейчас готово:

Код AS1/AS2:
this.fakebtn.onRollOver = over;
this.fakebtn.onRollOut = out;
this.fakebtn.onPress = down;
 
function over() {
	gotoAndStop("over");
}
function out() {
	gotoAndStop("up");
	txtcontent.textColor = 0xc9cbd0;
}
function down() {
	gotoAndStop("down");
	txtcontent.textColor = 0x34373f;
	fakebtn.enabled = false;
}


Последний раз редактировалось gerasim13; 19.03.2010 в 03:40.
Старый 19.03.2010, 03:57
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Код AS1/AS2:
class nav.MainMenu {
	var ar = [];
	var _int;
	var _iv;
	var k;
	public function MainMenu() {
		ar = [];
		clearInterval(_int);
	}
	function setGlobalMenu(X) {
		ar = X;
		for (var i = 0; i<ar.length; i++) {
			ar[i].onRollOver = ru.inils.framework.Delegate.create(this, V, [i]);
			ar[i].onRollOut = ar[i].onReleaseOutside=ru.inils.framework.Delegate.create(this, O, [i]);
			ar[i].onRelease = ru.inils.framework.Delegate.create(this, RELEASE, [i]);
		}
	}
	function RELEASE(z) {
		R(z);
	}
	function R(c) {
		k = c;
		clearInterval(_iv);
		clearInterval(_int);
		for (var j = 0; j<ar.length; j++) {
			ar[j].enabled = false;
			ar[j].gotoAndStop(1);
		}
		_int = setInterval(this, "ENABLE", 30);
 
 
	}
	function V(c) {
		ar[c].gotoAndPlay("Over");
	}
	function O(c) {
		ar[c].gotoAndPlay("Out");
	}
	function ENABLE() {
		clearInterval(_int);
		ar[k].gotoAndPlay("Release");
		ar[k].enabled = false;
		_int = setInterval(this,"OPEN",800);
	}
 
	function OPEN() {
		clearInterval(_int);
		for (var j = 0; j<ar.length; j++) {
			ar[j].enabled = true;
			ar[k].enabled = false;
		}
	}
}
Выдерка из моего класса, наверняка море ошибок поскольку просто щас кусками выдрал и навставлял, но механика думаю понятна, почитай, и наоснове этого напиши. там вприницпе все понятно. Короче надо те использовать циклы и массивы. Если что не понятно задавай вопросы


Последний раз редактировалось in4core; 19.03.2010 в 03:59.
Старый 19.03.2010, 13:42
gerasim13 вне форума Посмотреть профиль Отправить личное сообщение для gerasim13 Найти все сообщения от gerasim13
  № 3  
Ответить с цитированием
gerasim13

Регистрация: Jul 2008
Сообщений: 35
Спасибо! Но я что то никак не пойму что делает этот код. Не мог бы ты написать принцип работы своего меню, а код я свой напишу.


Последний раз редактировалось gerasim13; 19.03.2010 в 13:49.
Старый 19.03.2010, 14:00
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 4  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
А у тебя странички по разным кадрам?
Как отдельный файл с кодом сделать не подскажу, но можно и в кадре написать не много:
Код AS1/AS2:
stop();
//массив в именами всех кнопок
allBut = [page1, page2, page3, page4, page5];
for (var i = 0; i < allBut.length; i++) {
	//сразу отключает первую кнопку, так как находимся на первой странице
	_root.allBut[0].enabled=false
	//это просто пример, текст на кпопке такой же как её имя
	_root.allBut[i].t.text = _root.allBut[i]._name;
	//когда кликаем на каждой из кнопок
	_root.allBut[i].onPress = function() {
		//переход на номер кадра = последняя буква в имени кнопки
		_root.gotoAndStop(this._name.substr(-1));
		//все кнопки включаем
		enabledAll();
		//а только что кликнутую отключаем
		this.enabled = false;
 
	};
}
//функция включает все кнопки
function enabledAll() {
	for (var i = 0; i < allBut.length; i++) {
		_root.allBut[i].enabled = true;
 
	}
}
Вложения
Тип файла: rar Navigation.rar (10.4 Кб, 30 просмотров)


Последний раз редактировалось samana; 19.03.2010 в 14:57.
Старый 19.03.2010, 15:01
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 5  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Ну смотри принцип : ты создаешь массив кнопок например
Код AS1/AS2:
arr = [a1,a2,a3,a4]
Дальше пихаешь их в цикл и задаешь свойства роллеров. таким образом :

Код AS1/AS2:
for(i=0; i<arr.length; i++) { arr[i]. onRelease = rel(i); }
function rel(a) {
  for(i=0; i<arr.length; i++) {
     arr[i].enabled = true;
     arr[a].enabled = false;
}
Добавлено через 3 минуты
arr[a].enabled = false; может просто не прокатить из за ряда причин, в этом случае создаешь интервал на другую функцию которая отключит это все. пример ПОЛНЫЙ
Код AS1/AS2:
var k;
 var arr = [a1,a2,a3,a4]
for(i=0; i<arr.length; i++) { arr[i]. onRelease = rel(i); }
function rel(a) {
  for(i=0; i<arr.length; i++) {
     arr[i].enabled = true;
}
 k =a;
 setInterval(this,"f",30);
}
function f() {
arr[k].enabled = false;
}

Старый 19.03.2010, 15:12
gerasim13 вне форума Посмотреть профиль Отправить личное сообщение для gerasim13 Найти все сообщения от gerasim13
  № 6  
Ответить с цитированием
gerasim13

Регистрация: Jul 2008
Сообщений: 35
Спасибо, вроде бы въехал=)

Добавлено через 1 час 51 минуту
Вот так работает у меня:
Код AS1/AS2:
parent = this._parent;
var btnarr = new Array(parent.btnid1,parent.btnid2,parent.btnid3,parent.btnid4,parent.btnid5,parent.btnid6,parent.btnid7);
 
this.fakebtn.onRollOver = over;
this.fakebtn.onRollOut = out;
this.fakebtn.onPress = down;
 
function over() {
	gotoAndStop("over");
}
function out() {
	gotoAndStop("up");
	txtcontent.textColor = 0xc9cbd0;
}
function down() {
	for(i=0; i<btnarr.length; i++) {
		btnarr[i].fakebtn.enabled = true;
		btnarr[i].gotoAndStop("up");
		btnarr[i].txtcontent.textColor = 0xc9cbd0;
		fakebtn.enabled = false;
	}
	gotoAndStop("down");
	txtcontent.textColor = 0x34373f;
}
Сдается мне что это довольно по нубски и вместо этих 3 строк можно сделать что то лругое:
Код AS1/AS2:
btnarr[i].fakebtn.enabled = true;
btnarr[i].gotoAndStop("up");
btnarr[i].txtcontent.textColor = 0xc9cbd0;
Подскажите пожалуйста как сделать код красивее...

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

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

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


 


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


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