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

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

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

Регистрация: Mar 2010
Сообщений: 14
По умолчанию Создание нескольких кнопок одной функцией - не работает.

Здравствуйте, подскажите, как решить следующую задачу более корректно.
Хочу создать несколько кнопок в ряд посредством одной функции.

Код AS1/AS2:
function buttons() {
 
	var i:Number;
	i = 1;
 
	this.createEmptyMovieClip(["movieclip"+i],this.getNextHighestDepth());
	["movieclip"+nomerkn]createTextField(["textfield"+i],this.getNextHighestDepth(),0,0,50,50);
	["movieclip"+i]["textfield"+i]text="Simple text";
	trace (["movieclip"+i]["textfield"+i].text);
 
}
buttons();
Но она почему-то не работает. В кнопку не передаётся текст. В чём может быть проблема?

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

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
Код AS1/AS2:
 
 
function buttons() {
 
	var i:Number;
	i = 1;
 
	cont_c = this.createEmptyMovieClip(["movieclip"+i],this.getNextHighestDepth());
 
	textfield = cont_c.createTextField(["textfield"+i],this.getNextHighestDepth(),0,0,50,50);
	textfield.text="Simple text";
	trace (textfield.text);
 
}
buttons();

Старый 23.03.2010, 14:19
Не В Меня Ем вне форума Посмотреть профиль Отправить личное сообщение для Не В Меня Ем Найти все сообщения от Не В Меня Ем
  № 3  
Ответить с цитированием
Не В Меня Ем

Регистрация: Mar 2010
Сообщений: 14
NoCD, спасибо.
А как сделать, чтобы вызывалась функция buttons(20) - т.е. создание 20 кнопок? Каждая кнопка создаётся на 20px правее. Прости, за кривой код. Хотел смысл донести.
Код AS1/AS2:
 
 var a:Number;
function buttons(i) {
 for (a=1;a<=i;a++){
	["cont_c"+a] = this.createEmptyMovieClip(["movieclip"+a],this.getNextHighestDepth());
	["movieclip"+a]._x += 20;
 	textfield+a = cont_c+i.createTextField(["textfield"+a],this.getNextHighestDepth(),0,0,50,50);
	textfield+a.text="Simple text";
	trace (textfield+a.text);
 }
}
buttons(20);

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

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
Код AS1/AS2:
function buttons(num) {
 
	var i:Number;
	i = 1;
 
 for(var i = 0;i<=num;i++){
	var cont_c = this.createEmptyMovieClip(["movieclip"+i],this.getNextHighestDepth());
 var x = 35 * i;
 var name = "but_"+i;
 var clip = cont_c.attachMovie("mc",name,cont_c.getNextHighestDepth())
     clip._x = x;
	 clip.ind = i;
var textfield = cont_c.createTextField(["textfield"+i],this.getNextHighestDepth(),x,0,50,50);
	textfield.text=i;
	textfield.selectable = false
	clip.onPress = but_f;
	trace (textfield.text);
 }
 
}
 
function but_f(){
 
	trace(this.ind)
	}
 
buttons(20);
где mc - MovieClip, осущуствляет подложку для кнопки

Старый 23.03.2010, 14:44
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 5  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
В createEmptyMovieClip() не мешало бы еще все-таки строку передавать в качестве имени клипа, а не массив.

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

Регистрация: Mar 2010
Сообщений: 14
NoCD, хотел бы уточнить, как назначить на каждую кнопку следующую функцию:
Код AS1/AS2:
{
clearInterval(MY1);
MY1 = setInterval(myfunction(i), 4500);
}
В качестве i в функцию myfunction передаётся номер этой кнопки.

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

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
Цитата:
Сообщение от Не В Меня Ем Посмотреть сообщение
NoCD, хотел бы уточнить, как назначить на каждую кнопку следующую функцию:
Код AS1/AS2:
{
clearInterval(MY1);
MY1 = setInterval(myfunction(i), 4500);
}
В качестве i в функцию myfunction передаётся номер этой кнопки.
Что значит назначить следующую функцию?
У тебя есть несколько функций и ты бы хотел для каждой кнопки присвоить свою функцию?

Цитата:
Сообщение от udaaff Посмотреть сообщение
В createEmptyMovieClip() не мешало бы еще все-таки строку передавать в качестве имени клипа, а не массив.
я понимаю, что код не идеален, я сам так не пишу.
Это что бы автор понял, как будет работать код в его представлениях.


Последний раз редактировалось NoCD; 23.03.2010 в 15:59.
Старый 23.03.2010, 16:06
Не В Меня Ем вне форума Посмотреть профиль Отправить личное сообщение для Не В Меня Ем Найти все сообщения от Не В Меня Ем
  № 8  
Ответить с цитированием
Не В Меня Ем

Регистрация: Mar 2010
Сообщений: 14
При нажатии на каждую кнопку вызывается одна и та же функция, только с разными параметрами. Т.е. для кнопки "1" вызывается
Код AS1/AS2:
{MY1 = setInterval(myfunction(1), 4500);
}
При нажатии на кнопку "2" вызывается
Код AS1/AS2:
{MY1 = setInterval(myfunction(2), 4500);
}
Я бы хотел так сделать.

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

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
Код AS1/AS2:
 
 
var butArray = [1,2,3,4,5,2,0,3,5,1,2,3,4,1,5];
 
function buttons(array) {
 
	//var i:Number;
	//i = 1;
	var f:Number;
 var length:Number = array.length - 1;
 
 for(var i = 0;i<=length;i++){
 
 
	 var name1 = "movieclip"+i;
	 var name2 = "textfield"+i;
 
	 f = array[i];
 
	var cont_c = this.createEmptyMovieClip(name1,this.getNextHighestDepth());
 var x = 35 * i;
 var name3 = "but_"+i;
 var clip = cont_c.attachMovie("mc",name3,cont_c.getNextHighestDepth())
     clip._x = x;
	 clip.ind = i;
var textfield = cont_c.createTextField(name2,this.getNextHighestDepth(),x,0,50,50);
	textfield.text=i;
	textfield.selectable = false
	clip.onPress = _root["but"+f+"_f"];
	trace (textfield.text);
 }
 
}
 
function but0_f(){
	trace("Функция 0")
	trace(this.ind)
	}
function but1_f(){
	trace("Функция 1")
	trace(this.ind)
	}
 
function but2_f(){
	trace("Функция 2")
	trace(this.ind)
	}
function but3_f(){
	trace("Функция 3")
	trace(this.ind)
	}
function but4_f(){
	trace("Функция 4")
	trace(this.ind)
	}
function but5_f(){
	trace("Функция 5")
	trace(this.ind)
	}
buttons(butArray);
Если не то, то пиши более подробнее.

зачем setInterval ?

Ты хочешь вызывать в одной функции функцию myfunction() с разными параметрами и что бы она периодически повторяла свой вызов?


Последний раз редактировалось NoCD; 23.03.2010 в 16:22.
Старый 23.03.2010, 16:25
Не В Меня Ем вне форума Посмотреть профиль Отправить личное сообщение для Не В Меня Ем Найти все сообщения от Не В Меня Ем
  № 10  
Ответить с цитированием
Не В Меня Ем

Регистрация: Mar 2010
Сообщений: 14
Дело в том, что я сейчас пытаюсь сделать фотоальбом.
И там функция myfunction() отвечает за смену фотографий.
Она у меня вызывается каждые 4,5 секунды функцией setInterval(myfunction(i), 4500);
И я хочу, чтобы при нажатии на кнопку открывалась другая фотография и продолжилась смена, а для этого мне нужно сначала остановить вызов функции, затем запустить её же, но с другой фотографией (параметр i):

Код AS1/AS2:
clearInterval(MY1);
MY1 = setInterval(myfunction(i), 4500);

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

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

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


 


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


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