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

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

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

Регистрация: Dec 2010
Сообщений: 37
По умолчанию onRollOver не правильно работает

Такой вопрос:

Код AS1/AS2:
				var mc:MovieClip = _root.createEmptyMovieClip("mc"+i, _root.getNextHighestDepth());
				var container:MovieClip = mc.createEmptyMovieClip("container"+i, 0);
Я создаю клипы в них следом подгружаю картинку из XML и позиционирую ново созданные картинки на сцене:

Код AS1/AS2:
			container._x=objNEW.posX;
			container._y=objNEW.posY;
                        container.loadMovie(objNEW.ssil);
Это всё работает нормально.

Но после того как я накладываю на верхний Клип простой обработчик onRollOver - он начинает летать по всему экрану ну, а точнее навожу на него и он начинает прыгать с того места куда навел на новое место чуть ниже. Потом срабатывает onRollOut и он возвращается на место, но там курсор и он опять прыгает (ну в общем вы поняли).

Обработчик:
Код AS1/AS2:
				mc.onRollOver = function(){
					this._xscale=this._yscale = 101;
				}
				mc.onRollOut = function(){
					this._xscale=this._yscale = 100;
				}
XML

Код:
<?xml version="1.0" encoding="UTF-8"?>
<data>
 <gallery>
  <object name="1">
   <obj id="1" type="town" posX="170" posY="240" vis="true" acti="true" ssil="1.jpg" sobONPRESS="http://www.afd.org.ua" />
   <obj id="2" type="town" posX="120" posY="340" vis="true" acti="true" ssil="2.jpg" sobONPRESS="http://www.flasher.ru" />
   <obj id="3" type="town" posX="300" posY="470" vis="true" acti="s" ssil="3.jpg" sobONPRESS="http://www.habrahabr.ru" />
  </object>
 </gallery>
</data>
Как сделать так, что бы мой клип увеличивался в том же месте где навел относительно центра (ну что бы не прыгал)?

Старый 21.03.2011, 16:20
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Возможно дело не в этом, но:
Для загрузки необходимо использовать MovieClipLoader, и задавать обработчики типа onRollOver, дожидаясь процесса загрузки, то есть внутри обработчика onLoadInit.
Перепишите всё на MCL, с laodMovie у вас будут множественные проблемы.
__________________
Идите первым!

Старый 21.03.2011, 16:45
Haiat вне форума Посмотреть профиль Отправить личное сообщение для Haiat Найти все сообщения от Haiat
  № 3  
Ответить с цитированием
Haiat
[+6 09.06.11]
 
Аватар для Haiat

Регистрация: May 2007
Сообщений: 721
наверно дело в том, о чем Вам сказал mooncar, потому что нужно сперва дожидаться загрузки, а потом уже вешать все события

Старый 21.03.2011, 16:46
Alexvblbl вне форума Посмотреть профиль Отправить личное сообщение для Alexvblbl Найти все сообщения от Alexvblbl
  № 4  
Ответить с цитированием
Alexvblbl

Регистрация: Dec 2010
Сообщений: 37
Ну видоизменил функцию:

Код AS1/AS2:
if(objNEW.ssil){
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.loadClip(objNEW.ssil, container)
trace('s')
}
И всё равно прыгает объект. Как бы его сделать нормальным? Подскажите плз начальник домой не отпускает ))) я уже устал тут сидеть ...

Добавлено через 2 минуты
Цитата:
Сообщение от Haiat Посмотреть сообщение
наверно дело в том, о чем Вам сказал mooncar, потому что нужно сперва дожидаться загрузки, а потом уже вешать все события
Извините, а как будет это выглядеть ориентируясь на мой код ? Подскажите пожалуйста!

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Alexvblbl
Когда загрузиться, объект mcLoader сгенерирует onLoad, вот на него и вешайте функцию. Подробности в хелпе. (F1)
__________________
Дети не должны знать о своих родителях

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

Регистрация: Dec 2010
Сообщений: 37
Цитата:
Сообщение от Tails Посмотреть сообщение
Alexvblbl
Когда загрузиться, объект mcLoader сгенерирует onLoad, вот на него и вешайте функцию. Подробности в хелпе. (F1)
Код AS1/AS2:
mcLoader.onLoad = function () {
mcLoader.loadClip(objNEW.ssil, container)
}
Почему то так выдаёт ошибку...

Старый 21.03.2011, 17:11
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 7  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Tails, не путай человека! onLoad - это из другой оперы. Я же указывал, какое событие нужно слушать. Вам оставалось только открыть хелп и посмотреть пример.

Видоизмененный пример из хелпа:

Код AS1/AS2:
this.createEmptyMovieClip('image_mc', this.getNextHighestDepth());
var mclListener:Object = new Object();
 
mclListener.onLoadInit = function(target_mc:MovieClip) 
{
    target_mc.onRollOver = //(тут ваш обработчик)
};
 
var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
image_mcl.loadClip('http://www.helpexamples.com/flash/images/image1.jpg', image_mc);
__________________
Идите первым!

Старый 21.03.2011, 17:33
Alexvblbl вне форума Посмотреть профиль Отправить личное сообщение для Alexvblbl Найти все сообщения от Alexvblbl
  № 8  
Ответить с цитированием
Alexvblbl

Регистрация: Dec 2010
Сообщений: 37
Код AS1/AS2:
_root.createEmptyMovieClip('image_mc', _root.getNextHighestDepth());
					var mclListener:Object = new Object();
 
 
					mclListener.onLoadInit = function(target_mc:MovieClip) 
					{
						target_mc.onRollOver = function () {
							this._xscale=this._yscale = 120;
						}
						target_mc.onRollOut = function () {
							this._xscale=this._yscale = 100;
						}
						target_mc._x=objNEW.posX;
						target_mc._y=objNEW.posY;
					};
					var image_mcl:MovieClipLoader = new MovieClipLoader();
					image_mcl.addListener(mclListener);
					image_mcl.loadClip(objNEW.ssil, image_mc);
Таким образом создаётся только 1 Клип и цикл не работает

Добавлено через 1 минуту
И масштабирование всё равно не от центра происходит

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Создавать мувики и loadClip в цикле нужно. A MCL, слушатель и обработчик onLoadInit - хватит по одному.
Нечто похожее
http://www.flasher.ru/forum/showpost...01&postcount=5
Добейтесь с начала благополучной загрузки, а потом с рескейлом разбираться будете.

Посмотрите там в теме, ниже я вроде пример тоже выкладывал.
__________________
Идите первым!


Последний раз редактировалось mooncar; 21.03.2011 в 17:49.
Старый 21.03.2011, 18:10
Alexvblbl вне форума Посмотреть профиль Отправить личное сообщение для Alexvblbl Найти все сообщения от Alexvblbl
  № 10  
Ответить с цитированием
Alexvblbl

Регистрация: Dec 2010
Сообщений: 37
Цитата:
Сообщение от mooncar Посмотреть сообщение
Создавать мувики и loadClip в цикле нужно. A MCL, слушатель и обработчик onLoadInit - хватит по одному.
Нечто похожее
http://www.flasher.ru/forum/showpost...01&postcount=5
Добейтесь с начала благополучной загрузки, а потом с рескейлом разбираться будете.

Посмотрите там в теме, ниже я вроде пример тоже выкладывал.
Дело в том что у меня и так цикл:

Код AS1/AS2:
data_xml = new XML();
		data_xml.ignoreWhite = true;
		data_xml.load("data.xml");
		data_xml.onLoad = function() {
			colXML = data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes.length; 
			for(i=0; i<colXML; i++){
				var mc:MovieClip = _root.createEmptyMovieClip("mc"+i, _root.getNextHighestDepth());
				if(data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes[i].childNodes[0].firstChild!="false"){
					url = data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes[i].childNodes[0].firstChild
					//trace("DA")
				}else{
					trace("NO")
					//url = "NO"
				}
				objNEW = data_xml.childNodes[0].childNodes[0].childNodes[0].childNodes[i].attributes;
				var container:MovieClip = mc.createEmptyMovieClip("container"+i, 0);
				objname="newItem"+i;
			ID1 = objNEW.id
			container._x=objNEW.posX;
			container._y=objNEW.posY;
			var type:String = objNEW.type
			var visi:String = objNEW.vis;
				if(visi=="true")
				{
					container._alpha = 100;
				}else{
					container._alpha = 0;
				} // end if
			var acti:String = objNEW.acti;
				if(acti=="true")
				{
					mc.onRollOver = function(){
						this._xscale=this._yscale = 120;
						trace(url)
						trace(type)
					}
					mc.onRollOut = function(){
						this._xscale=this._yscale = 100;
					}
				}else {
 
				}
				//container.loadMovie(objNEW.ssil);
				mc.createEmptyMovieClip('image_mc', _root.getNextHighestDepth());
				if(objNEW.ssil){
 
					var mclListener:Object = new Object();
 
 
					mclListener.onLoadInit = function(target_mc:MovieClip) 
					{
						target_mc.onRollOver = function () {
							this._xscale=this._xscale = 120;
							this._yscale=this._yscale = 120;
						}
						target_mc.onRollOut = function () {
							this._xscale=this._yscale = 100;
						}
						target_mc._x=objNEW.posX;
						target_mc._y=objNEW.posY;
					};
					var image_mcl:MovieClipLoader = new MovieClipLoader();
					image_mcl.addListener(mclListener);
					image_mcl.loadClip(objNEW.ssil, image_mc);
 
					trace(container)
					}
				else{
					container=_root.attachMovie("ID"+ID1, objname, _root.getNextHighestDepth());
					container._x=objNEW.posX;
					container._y=objNEW.posY;
						container.onRollOver = function(){
							this._xscale=this._yscale = 120;
						}
						container.onRollOut = function(){
							this._xscale=this._yscale = 100;
						}
 
				}
 
			} // for закрыли
		}
И не работает как уже не пытался ...

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

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

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


 


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


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