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

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

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

Регистрация: Jan 2004
Адрес: Украина, Харьков
Сообщений: 1,524
Отправить сообщение для __i с помощью ICQ
По умолчанию [AS2] Работа Классов или их видимость или нужно смотреть %))

Проблема такая:

Есть несколько классов extends MovieClip.

Нарисованы к ним клипы, причем они вложены друг в друга - ща на пальцах покажу чтоб было ясно:

Мувик а_мс, его класс А_МС

Код:
class A_MC extends MovieClip{
var bmc:B_MC;
function set any(e){
....
bmc.any(e);
....
}
}
в него вложен мувик в_мс, его класс В_МС

Код:
class В_MC extends MovieClip{
function any(e){
trace(e);
}
}
теперь если я складываю этот мувик (А_МС) на сцену то все нормально работает, но если я атачу этот мувик функция any не срабатывает!!!

выглядит это где-то так:

this.attachMovieClip('a_mc_linkName','my_a_mc',1);
my_a_mc.any='77'

вот эта строка не отобразаеться (функция не сробатывает), почему так и как с этим бороться ?

Старый 22.12.2005, 21:39
Antares вне форума Посмотреть профиль Найти все сообщения от Antares
  № 2  
Ответить с цитированием
Antares
Banned
[+1 16.05.2006]
[++1 16.05.2006]
[+ 1 21.05.06]
[++ за хамство]
[+1 21.05.2006]
 
Аватар для Antares

Регистрация: Dec 2003
Сообщений: 3,925
Скорее всего дело в загрузке кадров во врейме n и попытке заюзать их во фрейме m, где m < n.

И еще : глядя на такую кашу я еще больше поддерживаю классика Мука в борьбе за разделение мух и котлет, а именно визуальной части и кода. Вместо наследования от MovieClip можно было воспользоваться композицией.

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

Регистрация: Jan 2004
Адрес: Украина, Харьков
Сообщений: 1,524
Отправить сообщение для __i с помощью ICQ
всего используеться 1 кадр.

теперь что ты подразумеваешь под композицией?. Классы сами создают свои мувики, а не являються наследниками мувиклипа?

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

Регистрация: Dec 2002
Адрес: Живу вот где-то
Сообщений: 493
А если так:
Код:
class A_MC extends В_MC{
По идее, мув класс будет наследоваться и так.

Старый 23.12.2005, 14:04
Antares вне форума Посмотреть профиль Найти все сообщения от Antares
  № 5  
Ответить с цитированием
Antares
Banned
[+1 16.05.2006]
[++1 16.05.2006]
[+ 1 21.05.06]
[++ за хамство]
[+1 21.05.2006]
 
Аватар для Antares

Регистрация: Dec 2003
Сообщений: 3,925
Что-то подобное:
Код:
import com.novemberain.visual.IVisualInterface;
import mx.transitions.*;

/**
 *
 * @author
 * @version
 **/
class com.novemberain.visual.VisualObject implements IVisualInterface 
{
	private var __viewport:MovieClip;
	
	function VisualObject( mc:MovieClip )
	{
		__viewport = mc;
	}
	
	
	/**
	 * 
	 * @usage   
	 * @return  
	 */
	public function getVisualObject(): Void
	{
		return __viewport;
	}


	/**
	 * 
	 * @usage   
	 * @param   x 
	 * @param   y 
	 * @return  
	 */
	public function move( x:Number, y:Number ): Void
	{
		trace('Object ' + __viewport + ', called move to ' + [x, y]);
		
		__viewport._x = x;
		__viewport._y = y;
	}


	/**
	 * 
	 * @usage   
	 * @param   state 
	 * @return  
	 */
	public function changeState( state:String ): Void
	{
		if(state) __viewport.gotoAndStop(state);
	}


	/**
	 * 
	 * @usage   
	 * @param   x 
	 * @param   y 
	 * @return  
	 */
	public function slideTo( x:Number, y:Number, relative:Boolean, time:Number, callback:Function ): Void
	{
		if(relative)
		{
			var xTo:Number = __viewport._x + x;
			var yTo:Number = __viewport._y + y;			
		} else
		{
			var xTo:Number = x;
			var yTo:Number = y;
		}
		
		var xTween:Tween = new Tween(__viewport, '_x', Elastic.easeOut, __viewport._x, xTo, time, true );
		var yTween:Tween = new Tween(__viewport, '_y', Elastic.easeOut, __viewport._y, yTo, time, true );
		
		if(callback) xTween.onMotionStopped = callback;
		
		xTween.start();
		yTween.start();
	}

	/**
	 * 
	 * @usage   
	 * @return  
	 */
	public function show(  ):Void 
	{
		__viewport._visible = true;
	}

	/**
	 * 
	 * @usage   
	 * @return  
	 */
	public function hide(  ):Void 
	{
		__viewport._visible = false;
	}

}

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

Регистрация: Jan 2004
Адрес: Украина, Харьков
Сообщений: 1,524
Отправить сообщение для __i с помощью ICQ
2 Монстр - класс в_мс не явлдяеться наследником а_мс

Ну хорошо написал ты этот код и что дальше? или намекаешь что все мои мувики теперь должны обрастать таким VisualObject?

как это у меня сделано:

Код:
class A_mc extends MovieClip{
		var num:TextField;
		var b_mc:B_mc;
		function set mcName(e)
		{
			this.num.text='A '+e;
			this.b_mc.mcName =this.num.text;
		}
		
	}
Код:
class B_mc extends MovieClip{
		var num:TextField;

		function set mcName(e)
		{
			this.num.text='B '+e;
		}
		
	}
в первом кадре 1 фрейма
Код:
my_1_mc.mcName = 'legit';

this.attachMovie('a_mc','my_2_mc',2,{_x:200});
this.my_2_mc.mcName='priatta4en ';
тут я аттачу архив с примером - - блин не загружает файл
так объясню - в библиотеке 2 клипа a_mc и b_mc - им установлены соответствующие классы и линкаджнеймы,
b_mc - внутри 1 текстовое поле, имя num и фон.

a_mc - внутри 1 текстовое поле, имя num, фон и мувик b_mc, имя b_mc.

на выходе получаем в для my_1_mc имена и там и там,
для my_2_mc имя только у a_mc, во вложеном кату имени , сеттер не сработал(и методы тоже не работаеют)

как можно это переписать чтоб всегда работало ? и при аттаче и так?

Старый 23.12.2005, 14:51
Antares вне форума Посмотреть профиль Найти все сообщения от Antares
  № 7  
Ответить с цитированием
Antares
Banned
[+1 16.05.2006]
[++1 16.05.2006]
[+ 1 21.05.06]
[++ за хамство]
[+1 21.05.2006]
 
Аватар для Antares

Регистрация: Dec 2003
Сообщений: 3,925
Я ни на что не намекаю. Я сказал, что считаю нужным. Более того, раз ты продолжаешь говорить "все мои мувики", значит, разницу ты не уловил.

Решать только тебе.

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

Регистрация: Jan 2004
Адрес: Украина, Харьков
Сообщений: 1,524
Отправить сообщение для __i с помощью ICQ
объясни мне, где я неправ и почему нужно делать так как ты, а не как я в чем различие ?

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

Регистрация: Jan 2004
Адрес: Украина, Харьков
Сообщений: 1,524
Отправить сообщение для __i с помощью ICQ
в принципе то есть решение этой проблемы но оно очень корявое!!!!!!
Код:
var num:TextField;
		var b_mc:B_mc;
		function set mcName(e)
		{
			this.num.text='A '+e;
                                      this.onEnterFrame = function(){
			  this.b_mc.mcName =this.num.text;
                                          delete this.onEnterFrame;
}
		}

Старый 23.12.2005, 16:16
Antares вне форума Посмотреть профиль Найти все сообщения от Antares
  № 10  
Ответить с цитированием
Antares
Banned
[+1 16.05.2006]
[++1 16.05.2006]
[+ 1 21.05.06]
[++ за хамство]
[+1 21.05.2006]
 
Аватар для Antares

Регистрация: Dec 2003
Сообщений: 3,925
Цитата:
Сообщение от __i
объясни мне, где я неправ и почему нужно делать так как ты, а не как я в чем различие ?
Потому что так я могу добавить какую угодно функциональность, наследую класс. А функциональность визуального объекта всегда будет доступна через обращение к свойству.

Это не значит, что ты не прав. Это значит, что есть "лучшие техники", а есть просто решения.

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

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

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


 


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


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