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

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

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

Регистрация: Aug 2006
Сообщений: 102
По умолчанию Как "достучатся" из внешнего swf до Объекта в главном таймлайне?

Если у меня в главном таймлайне лежит AsBroadcaster
Код AS1/AS2:
var my_obj=new Object();
AsBroadcaster.initialize(my_obj);
, в мувик-контейнер там же (названный, к примеру, swf) грузится снаружи external.swf, содержащий broadcastMessage для объекта my_obj.
На swf в главном таймлайне поставлен
Код AS1/AS2:
my_obj.addListener(swf)
.

Как "достучатся" с посланием из swf до my_obj? с
Код AS1/AS2:
_level0.my_obj
не получается...

спасибо...

полный код главного файла:
Код AS1/AS2:
var startX:Number=mc._x;
var startY:Number=mc._y;
var counter:Number=0;
var my_obj=new Object();
AsBroadcaster.initialize(my_obj);
 
mc.onMove=function(){
	status_tf.text="Двигается";
	counter+=1;
	counter_tf.text=counter;
}
mc.onStop=function(){
	status_tf.text="Стоит";
}
 
mc.onPress=function(){
	this.startDrag();
}
mc.onRelease=function(){
	this.stopDrag();
}
 
start_mc03 = new MovieClipLoader();
startpreload03 = new Object();
start_mc03.addListener(startpreload03);
startpreload03.onLoadStart = function(targetmyMC) {
 
};
 
startpreload03.onLoadProgress = function(targetmyMC, lBytes, tBytes) {
 
};
startpreload03.onLoadInit = function (targetmyMC)
{
 
}
 
startpreload03.onLoadComplete = function(targetmyMC) {
 
my_obj.addListener(swf);
};
start_mc03.loadClip("external.swf", swf);
и внешнего:
Код AS1/AS2:
onEnterFrame=function(){
	if(_level0.mc._x-startX!=0 || _level0.mc._y-startY!=0){
		startX=_level0.mc._x;
		startY=_level0.mc._y;
 
		_level0.app.broadcastMessage("onMove");
	}else{
		_level0.app.broadcastMessage("onStop");
	}
}


Последний раз редактировалось iNils; 20.07.2009 в 13:44.
Старый 19.07.2009, 15:35
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Код AS1/AS2:
obj.broadcastMessage("onMove");
это вызов метода onMove у всех объектов, зарегистрированных в obj как листенеры,
сам obj -это объект с методами AsBroadcaster

а теперь просто прикинь кому и что ты пытаешься "послать"..

в твоем случае бродкастером должен быть swf (AsBroadcaster.initialize(this),
после того как он загрузится нужно подписать этот mc на его прослушку (swf.addListener(mc)) и тогда broadcastMessage("onMove"); в swf будет поймано в мувике mc основного клипа- будет вызван его метод onMove

ps
в этом частном случае просто _root.mc.onMove приведет к такому же эффекту и без всяких бродкастеров..

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

Регистрация: Mar 2009
Сообщений: 21
Возможно что здесь нужно еще где-то закрыть главную шкалу. Читайте про _lockroot. Когда загружается swf, если в нем где-то есть _root, то оно будет указывать на _root флешки, в которую он загружается.

Старый 20.07.2009, 01:30
polol вне форума Посмотреть профиль Отправить личное сообщение для polol Найти все сообщения от polol
  № 4  
Ответить с цитированием
polol

Регистрация: Aug 2006
Сообщений: 102
Что-то не выходит. Вообще у меня из swf и к swf обращение и без lockroot работало пока. Из swf просто через _level0, к элементам swf просто через _root.swf...... Сейчас подставил как Вы посоветовали, но сигналы до главного из swf не доходят.
главный сейчас:
Код AS1/AS2:
var startX:Number=mc._x;
var startY:Number=mc._y;
var counter:Number=0;
var object=new Object();
mc.onMove=function(){
	status_tf.text="Двигается";
	counter+=1;
	counter_tf.text=counter;
 
}
mc.onStop=function(){
	status_tf.text="Стоит";
 
}
mc.onPress=function(){
	this.startDrag();
}
mc.onRelease=function(){
	this.stopDrag();
}
 
start_mc03 = new MovieClipLoader();
startpreload03 = new Object();
start_mc03.addListener(startpreload03);
startpreload03.onLoadStart = function(targetmyMC) {
 
};
startpreload03.onLoadProgress = function(targetmyMC, lBytes, tBytes) {
};
startpreload03.onLoadInit = function (targetmyMC)
{
 
}
startpreload03.onLoadComplete = function(targetmyMC) {
	swf._lockroot = true;
	swf.addListener(mc)
};
start_mc03.loadClip("external.swf", swf);
а придаточный:
Код AS1/AS2:
AsBroadcaster.initialize(this)
onEnterFrame=function(){
	if(_level0.mc._x-startX!=0 || _level0.mc._y-startY!=0){
		startX=_level0.mc._x;
		startY=_level0.mc._y;
 
		object.broadcastMessage("onMove");
	}else{
		object.broadcastMessage("onStop");
	}
}


Последний раз редактировалось iNils; 20.07.2009 в 13:45.
Старый 20.07.2009, 13:47
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 5  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
polol, пожалуйста, избавьте нас от множества пустых строк в ваших сообщения.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 20.07.2009, 17:49
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
polol, совершенно непонятно, что (зачем) ты пишешь и что ожидаешь получить
Код AS1/AS2:
object.broadcastMessage("onMove");
чтобы сработал mc.onMove, этот mc должен быть добавлен к листенерам бродкастера,
впрочем я уже писал об этом

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

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

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


 


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


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