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

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

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

Регистрация: Apr 2004
Адрес: Харьков, Украина
Сообщений: 463
Отправить сообщение для Reijii с помощью ICQ
По умолчанию createEmptyMovieClip

Доброго вечера,

возник такой вопрос, создаю мувиклип в котором потом дублирую клипы, имя мувиклипу передаю через параметр функции, но, когда я два раза вызываю функцию и передаю ей скажем имена menu1 и menu2
то создается на сцене только menu2

подскажите в чем проблема плиз.
код:

Код:
 ....
   function buildMenu() {
	
	_root.createEmptyMovieClip(mName, this.getNextHighestDepth());
	eval(mName)._x = mX;
	eval(mName)._y = mY;
	eval(mName).opaqueBackground = 0xCCCCCC;

	
	var i:Number;
	
	for( i = 0; i < bCount; i++) {
		eval(mName).attachMovie(iClip, "menuItem_" + i, i);
		currentItem = eval(mName)["menuItem_"+i];
		currentItem.itemName = iLabel[i];
...

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

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 2,736
Отправить сообщение для Король с помощью ICQ
во первых у тебя в функцию ничего не передается - чтоб передавалось она должна выглядеть так:
function buildMenu(myName) {...
во вторых не используй eval - пиши так:

noo = _root.createEmptyMovieClip(iname, depth)

и дальше работай с noo

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

Регистрация: Apr 2004
Адрес: Харьков, Украина
Сообщений: 463
Отправить сообщение для Reijii с помощью ICQ
Цитата:
Сообщение от Король
во первых у тебя в функцию ничего не передается - чтоб передавалось она должна выглядеть так:
function buildMenu(myName) {...
во вторых не используй eval - пиши так:

noo = _root.createEmptyMovieClip(iname, depth)

и дальше работай с noo
вот полностью код,
может так будет понятней
Код:
		var iClip:String;
		var iXML:String;
		var mX:Number;
		var mY:Number;
		var iSpace:Number;
		var vLayout:Boolean;
		var mName:String;
		
		var iLabel = new Array(); 	
		var bCount:Number; 

function zMenu(menuName:String, itemClip:String, itemLabelXML:String, xPos:Number, yPos:Number, itemSpace:Number, vertLayout:Boolean) {
	
		iClip = itemClip;
		mName = menuName;
		iXML = itemLabelXML;
		mX = xPos;
		mY = yPos;
		iSpace = itemSpace;
		vLayout = vertLayout;

		System.useCodepage = false;
		
		if (checkParam(iClip, iXML)) {								
			loadXML(iXML);
		} else {
		}
}
/* проверка входящих параметров */
function checkParam(clp:String, xml:String):Boolean {
	var fl:Boolean;
	
	if ((!clp) || (!xml) || (!mName)) {
		trace('Забыли задать параметр!')
		fl = false;
	} else {
		fl = true;
	}
	return fl;
}
/* считываем XML */
function loadXML(xml:String){
	var lang = new XML ();
	var flg:Number;
	
	lang.load (xml);
	lang.ignoreWhite = true;

	lang.onLoad = function (success) {
		lang = lang.firstChild;
		var len:Number = lang.childNodes.length;
		bCount = len;
	
		for (var i=0;i<len;i++)	{		
			iLabel[i] = lang.childNodes[i].firstChild.toString();
		}
		buildMenu();
	}
}
/* строим меню */
function buildMenu() {
	
	nm = _root.createEmptyMovieClip(mName, this.getNextHighestDepth());
	nm._x = mX;
	nm._y = mY;
	nm.opaqueBackground = 0xCCCCCC;

	
	var i:Number;
	
	for( i = 0; i < bCount; i++) {
		nm.attachMovie(iClip, "menuItem_" + i, i);
		currentItem = nm["menuItem_"+i];
		currentItem.itemName = iLabel[i];
		
		if(i != 0) {
			if (vLayout) {
				prevItem = nm["menuItem_" + (i - 1)];
				currentItem._y = prevItem._y + prevItem._height + iSpace;
			} else {
				prevItem = nm["menuItem_" + (i - 1)];
				currentItem._x = prevItem._x + prevItem._width + iSpace;
			}
		}
	}
	nm.menuItem._visible = false;			
}

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

Регистрация: Apr 2004
Адрес: Харьков, Украина
Сообщений: 463
Отправить сообщение для Reijii с помощью ICQ
я думаю что проблема вот в чем, только пока безпонятия как ее решить
я трэйсил переменную с именем которой создается emptyMovieClip.. и оказалось что код игнорирует первую переменную при вызове функции
образом
zMenu('name1', 'xml1' ...... );
zMenu('name2', 'xml1' ...... );

трайс выдает только name2 в обоих случаях... т.е. как я понял обрабатывает только второй вызов. как можно избежать такой ошибки ?
за одно хотел спросить как можно избежать того что код выполняется раньше чем считывается XML и пришлось сделать проверку на флжок, как видно предоставленном коде.

как сказали в детском фильме
"я только учусь" Smile

Старый 06.12.2005, 17:18
KUZEN вне форума Посмотреть профиль Отправить личное сообщение для KUZEN Посетить домашнюю страницу KUZEN Найти все сообщения от KUZEN
  № 5  
Ответить с цитированием
KUZEN
Ветеран форума
 
Аватар для KUZEN

Регистрация: Jun 2005
Адрес: MOSCOW
Сообщений: 6,852
Отправить сообщение для KUZEN с помощью ICQ Отправить сообщение для KUZEN с помощью Yahoo Отправить сообщение для KUZEN с помощью Skype™
Попробуй может в этом проблема

Код:
lang.onLoad = function (success) {
               if(success){
		lang = lang.firstChild;
		var len:Number = lang.childNodes.length;
		bCount = len;
	
		for (var i=0;i<len;i++)	{		
			iLabel[i] = lang.childNodes[i].firstChild.toString();
		}
		buildMenu();
               }
	}
__________________
BestMasterиZация

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

Регистрация: Apr 2004
Адрес: Харьков, Украина
Сообщений: 463
Отправить сообщение для Reijii с помощью ICQ
Цитата:
Сообщение от KUZEN
Попробуй может в этом проблема

Код:
lang.onLoad = function (success) {
               if(success){
		lang = lang.firstChild;
		var len:Number = lang.childNodes.length;
		bCount = len;
	
		for (var i=0;i<len;i++)	{		
			iLabel[i] = lang.childNodes[i].firstChild.toString();
		}
		buildMenu();
               }
	}
к сожалению увы.. все равно подхватывает только последнее название..
xml отрабатыает нужное колво раз.. а вот два меню не строит..

Старый 06.12.2005, 17:40
KUZEN вне форума Посмотреть профиль Отправить личное сообщение для KUZEN Посетить домашнюю страницу KUZEN Найти все сообщения от KUZEN
  № 7  
Ответить с цитированием
KUZEN
Ветеран форума
 
Аватар для KUZEN

Регистрация: Jun 2005
Адрес: MOSCOW
Сообщений: 6,852
Отправить сообщение для KUZEN с помощью ICQ Отправить сообщение для KUZEN с помощью Yahoo Отправить сообщение для KUZEN с помощью Skype™
Гдето ты что то делаешь не так ... разбираться в твоём коде неохота, да и времени нет, посиди ещё раз везде всё протрейси и посмотри что к чему ...
__________________
BestMasterиZация

Старый 06.12.2005, 17:44
motor4ik вне форума Посмотреть профиль Отправить личное сообщение для motor4ik Посетить домашнюю страницу motor4ik Найти все сообщения от motor4ik
  № 8  
Ответить с цитированием
motor4ik
 
Аватар для motor4ik

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

Старый 06.12.2005, 18:45
Dimchansky вне форума Посмотреть профиль Отправить личное сообщение для Dimchansky Посетить домашнюю страницу Dimchansky Найти все сообщения от Dimchansky
  № 9  
Ответить с цитированием
Dimchansky

Регистрация: Jul 2005
Сообщений: 225
Отправить сообщение для Dimchansky с помощью ICQ
что-то подсказывает мне, что _root.createEmptyMovieClip(mName, this.getNextHighestDepth()); this.getNextHighestDepth() не имеет отношения к _root, вот и создаются твои мувы на одинаковой глубине. При этом ессесно второй замещает первый.

Старый 06.12.2005, 18:47
KUZEN вне форума Посмотреть профиль Отправить личное сообщение для KUZEN Посетить домашнюю страницу KUZEN Найти все сообщения от KUZEN
  № 10  
Ответить с цитированием
KUZEN
Ветеран форума
 
Аватар для KUZEN

Регистрация: Jun 2005
Адрес: MOSCOW
Сообщений: 6,852
Отправить сообщение для KUZEN с помощью ICQ Отправить сообщение для KUZEN с помощью Yahoo Отправить сообщение для KUZEN с помощью Skype™
Цитата:
Сообщение от Dimchansky
что-то подсказывает мне, что _root.createEmptyMovieClip(mName, this.getNextHighestDepth()); this.getNextHighestDepth() не имеет отношения к _root, вот и создаются твои мувы на одинаковой глубине. При этом ессесно второй замещает первый.
Возможно если компилишь по 6-ку
__________________
BestMasterиZация

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

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

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


 


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


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