Показать сообщение отдельно
Старый 12.07.2009, 23:33
switcher! вне форума Посмотреть профиль Отправить личное сообщение для switcher! Найти все сообщения от switcher!
  № 1  
Ответить с цитированием
switcher!

Регистрация: May 2009
Сообщений: 220
По умолчанию Ощибка 1120. Как обойти?

возникла скользкая проблема. Дабы не выкладывать весь код представлю схематично основные моменты.

Есть исполняемый класс A (по имени .fla файла) в безымянном пакете и в той же директориию
В этом классе создается экземпляр класа B и С (AS-файлы находится в отдельной папке уровнем ниже и принадлежат одному пакету). У класса B есть свойство bb (класса МувиКлип).

На новом кадре скрипт должен вызывать функцию, которая (при определенном положении курсора мыши относительно стола) должна двигать мувиклип внутри экземпляра класса B .

Но вместо этого (по адресу C.AS, line *) я вижу ошибку 1120 сразу на два слова. Т.е. неизвестное значение на stage и на b (экземпляр класса B, созданный в исполняемом классе A)
Это точно не из-за import ...;. Импортировал в класс С все "родные" классы. Не помогло ни для одного, ни для другого.

Выглядит примерно так:
Код AS3:
package
{
	import uti.*;
	...
 
	public class A
	{
		public var b:B;
		public var c:C;
 
		public function A
		{
			b = new B;
			addChild(b)
 
			c = new C;
 
			addEventListener(Event.ENTER_FRAME, c.eventFrame)
		}
	}
}
 
package uti
{
	import ...;
	...
 
	public class B
	{
		public var bb:MovieClip;
 
		public function B
		{
			...
			bb.x = 0;
			bb.y = 0;
                        addChild(bb);
		}
	}
}
 
package uti
{
	import ...;
	...
 
	public class C
	{
		public var mover:Number = 5;
 
		public function C
		{
 
		}
 
		public function eventFrame():void
		{
			if (stage.mouseX >= 520 && stage.mouseY >= 370)
			{
				b.bb.x -= mover;
				b.bb.y -= mover;
			}
		}
	}
}
с другой стороны. В обычном таймлайне прекрасно работает такой код и выполняет нужную операцию:
Код AS3:
var bb:Kvadrat = new Kvadrat();
bb.x = 300;
bb.y = 200;
addChild(Map);
 
addEventListener(Event.ENTER_FRAME, mover);
 
function mover(e:Event):void
{
if (stage.mouseX >= 520&&stage.mouseY >= 370)
{
	bb.x += 1;
	bb.y += 1;
}
}


Последний раз редактировалось switcher!; 12.07.2009 в 23:36.