Mr. Fixit
08.10.2007, 20:25
чем же заменить eval в этом классе, что бы работал код...
this[""] - не помогает.
import mx.utils.Delegate;
class SlideShow {
private var randomNum = 0;
private var randomNumLast = 0;
var container_mc;
var watcher_mc;
var images_xml:XML;
var imageArray:Array;
var timerInterval:Number;
var thisLoader;
var numPause:Number;
var order:String;
var looping:String;
var fadetime:Number;
function SlideShow () {
container_mc = _level0.createEmptyMovieClip ("container", 0);
container_mc.createEmptyMovieClip ("loader1_mc",2);
container_mc.createEmptyMovieClip ("loader2_mc",1);
watcher_mc = _level0.createEmptyMovieClip ("watcher_mc", 100);
images_xml = new XML ();
images_xml.ignoreWhite = true;
images_xml.onLoad = Delegate.create (this, parse);
images_xml.load ("images.xml");
}
function parse () {
imageArray = new Array ();
var root = getNode (images_xml);
numPause = Number (getNode (images_xml).attributes.timer * 1000);
order = getNode (images_xml).attributes.order;
looping = getNode (images_xml).attributes.looping;
fadetime = Number (getNode (images_xml).attributes.fadetime);
var imageNode = root.lastChild;
while (imageNode.nodeName != null) {
var imageData = new Object ();
imageData.path = imageNode.attributes.path;
imageArray.push (imageData);
imageNode = imageNode.previousSibling;
}
container_mc._x = 50;
container_mc._y = 50;
imageArray.reverse ();
imageGen (imageArray);
}
// depth swapping
function swapPlace (clip, num) {
eval (clip).swapDepths (eval ("container_mc.loader" + num + "_mc"));
}
function loadImages (data, num) {
var i;
if (i == undefined || i == 2) {
i = 2;
createLoader (i,data,num);
i = 1;
} else if (i == 1) {
createLoader (i,data,num);
i = 2;
}
}
function createLoader (i, data, num) {
thisLoader = eval ("container_mc.loader" + i + "_mc");
trace (thisLoader); // UNDEFINED
thisLoader._alpha = 0;
thisLoader.loadMovie (data[num].path);
watcher_mc.onEnterFrame = function () {
var picLoaded = thisLoader.getBytesLoaded ();
var picBytes = thisLoader.getBytesTotal ();
if (isNaN (picBytes) || picBytes < 4) {
return;
}
if (picLoaded / picBytes >= 1) {
swapPlace ("container_mc.loader2_mc",1);
var alphaTween:Object = new mx.transitions.Tween (thisLoader, "_alpha", mx.transitions.easing.Regular.easeOut, 0, 100, fadetime, true);
timerInterval = setInterval (imageGen, numPause, data);
delete this.onEnterFrame;
}
};
}
function imageGen (data) {
var p:Number;
if (p == undefined || p == data.length && looping == "yes") {
p = 0;
} else {
break;
}
loadImages (data,p);
p++;
clearInterval (timerInterval);
}
function getNode (xml:XML):XMLNode {
var node:XMLNode = xml.firstChild;
for (var i:Number = 1; i < arguments.length; i++) {
node = node.childNodes[arguments[i]];
}
return node;
}
}
this[""] - не помогает.
import mx.utils.Delegate;
class SlideShow {
private var randomNum = 0;
private var randomNumLast = 0;
var container_mc;
var watcher_mc;
var images_xml:XML;
var imageArray:Array;
var timerInterval:Number;
var thisLoader;
var numPause:Number;
var order:String;
var looping:String;
var fadetime:Number;
function SlideShow () {
container_mc = _level0.createEmptyMovieClip ("container", 0);
container_mc.createEmptyMovieClip ("loader1_mc",2);
container_mc.createEmptyMovieClip ("loader2_mc",1);
watcher_mc = _level0.createEmptyMovieClip ("watcher_mc", 100);
images_xml = new XML ();
images_xml.ignoreWhite = true;
images_xml.onLoad = Delegate.create (this, parse);
images_xml.load ("images.xml");
}
function parse () {
imageArray = new Array ();
var root = getNode (images_xml);
numPause = Number (getNode (images_xml).attributes.timer * 1000);
order = getNode (images_xml).attributes.order;
looping = getNode (images_xml).attributes.looping;
fadetime = Number (getNode (images_xml).attributes.fadetime);
var imageNode = root.lastChild;
while (imageNode.nodeName != null) {
var imageData = new Object ();
imageData.path = imageNode.attributes.path;
imageArray.push (imageData);
imageNode = imageNode.previousSibling;
}
container_mc._x = 50;
container_mc._y = 50;
imageArray.reverse ();
imageGen (imageArray);
}
// depth swapping
function swapPlace (clip, num) {
eval (clip).swapDepths (eval ("container_mc.loader" + num + "_mc"));
}
function loadImages (data, num) {
var i;
if (i == undefined || i == 2) {
i = 2;
createLoader (i,data,num);
i = 1;
} else if (i == 1) {
createLoader (i,data,num);
i = 2;
}
}
function createLoader (i, data, num) {
thisLoader = eval ("container_mc.loader" + i + "_mc");
trace (thisLoader); // UNDEFINED
thisLoader._alpha = 0;
thisLoader.loadMovie (data[num].path);
watcher_mc.onEnterFrame = function () {
var picLoaded = thisLoader.getBytesLoaded ();
var picBytes = thisLoader.getBytesTotal ();
if (isNaN (picBytes) || picBytes < 4) {
return;
}
if (picLoaded / picBytes >= 1) {
swapPlace ("container_mc.loader2_mc",1);
var alphaTween:Object = new mx.transitions.Tween (thisLoader, "_alpha", mx.transitions.easing.Regular.easeOut, 0, 100, fadetime, true);
timerInterval = setInterval (imageGen, numPause, data);
delete this.onEnterFrame;
}
};
}
function imageGen (data) {
var p:Number;
if (p == undefined || p == data.length && looping == "yes") {
p = 0;
} else {
break;
}
loadImages (data,p);
p++;
clearInterval (timerInterval);
}
function getNode (xml:XML):XMLNode {
var node:XMLNode = xml.firstChild;
for (var i:Number = 1; i < arguments.length; i++) {
node = node.childNodes[arguments[i]];
}
return node;
}
}