Информация №1 .Объекты, которых нет в текущем кадре, в настоящий момент не существуют (по крайней мере, для вашего сценария).
Информация №2 .Смешение сценариев и фреймов - смелый поступок.Потому что впереди вас ждет много боли, страданий и страданий, как только вы решите пойти по этому пути.
Если бы у меня была задача программирования, многие части разбросаны по сложной иерархии, я думаю, что сделал бы следующее.
Во-первых, я бы разработал общий класс данных, доступный из любой точки вашего приложения.
package
{
import flash.events.Event;
import flash.events.EventDispatcher;
public class AppData
{
static public const D:Object = new Object;
static public const E:Event = new Event(Event.CHANGE);
static public const I:EventDispatcher = new EventDispatcher;
static public function has(key:String):Boolean
{
return D.hasOwnProperty(key);
}
static public function read(key:String):*
{
return D[key];
}
static public function write(key:String, value:*):void
{
if (value === null)
{
delete D[key];
}
else
{
D[key] = value;
}
I.dispatchEvent(E);
}
}
}
Теперь, если вы хотите, чтобы определенный клип вел себя определенным образом,фактически не зная, где находится этот клип в иерархии вашего приложения.Например, вы хотите контролировать его альфа-прозрачность.В первом кадре этого клипа вы делаете:
import AppData;
import flash.events.Event;
// The last argument is important, because timeline objects are
// auto-removed if their parent's timeline instructs so, thus
// you won't be able to locate them and unsubscribe, which,
// in turn, means they will hang in the memory forever.
// Still, if you subscribe them with useWeakReference
// set to true, they will be removed normally
// and unsubscribed automatically.
AppData.I.addEventListener(Event.CHANGE, onChange, false, 0, true);
// Call once in order to forcibly sync the object with the data.
onChange(null);
function onChange(e:Event):void
{
if (AppData.has("red.alpha"))
{
alpha = AppData.read("red.alpha");
}
else
{
alpha = 1;
}
}
Затем, после выполнения следующей инструкции, каждый объект, наблюдая, как параметр red.alpha изменит свой alpha :
import AppData;
AppData.write("red.alpha", 0.3);
Установка выше очень примитивна и, возможно, может быть улучшена несколькими способами, но это очень зависит от понимания того, что вы там строите, что яне имеют.