i have some code that moves a movieclip container(mC) left to right in an “infinite” fashion. The container is populated with image via xml and i have two categories with different xml files for each.
When i initially load the swf, everything works as though it should, the images scroll left to right infinitely.
When i switch categories (go to frame 2, removeChild(mC), return to frame 1 with variable set to other category), loading in a different xml, the scroller no longer works. it registers that i want it to move from side to side, but it seems to be governed by something else.
If i try to switch back to the first category again, the same thing occurs where the movement is broken.
Does it have something to do with garbage collection not occuring to clear out the values of mC and its contents?
var xmlData:XML = new XML();
var widthDivision:Number;
var xmlLoader:URLLoader = new URLLoader();
whichCat();
var mC:MovieClip;
var portfolio:MovieClip = new MovieClip();
var container:MovieClip;
var image3:MovieClip;
var image2:MovieClip;
var image1:MovieClip;
var link3:MovieClip;
var link2:MovieClip;
var link1:MovieClip;
function whichCat():void{
switch (category){
case 1:
trace("Loading : NOOMA");
xmlLoader.load(new URLRequest("http://beta.flannel.org/categories/20.xml"));//CHANGE TO PLAYER.FLANNEL.ORG on launch!
break;
case 2:
trace('Loading : Tour Films');
xmlLoader.load(new URLRequest("http://beta.flannel.org/categories/21.xml"));// CHANGE TO PLAYER.FLANNEL.ORG on launch!
break;
}
}
xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, loadFail);
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
function loadFail(e:Event):void{
trace("error loading " + e.target.name);
}
function LoadXML(e:Event):void {
trace(e.target);
xmlData = new XML(e.target.data);
ParseFilms(xmlData);
}
mGradLeft.mouseChildren = false;
mGradLeft.mouseEnabled = false;
mGradRight.mouseChildren = false;
mGradRight.mouseEnabled = false;
bPlay.mouseEnabled = false;
mPlay.mouseEnabled = false;
mPlay.mouseChildren = false;
addChildAt(mBlockAll,2);
// // // // // // // // // // // // // // // // // // // // // // // // // // // //
// // // // // // // // // // // DEALING WITH XML // // // // // // // // // // //
// // // // // // // // // // // // // // // // // // // // // // // // // // // //
var flashText:TextFormat = new TextFormat();
flashText.font = "Helvetica";
flashText.size = 12;
flashText.color = 0xb2b2b2;
var bigText:TextFormat = new TextFormat();
bigText.font = "Helvetica";
bigText.size = 20;
bigText.color = 0xb2b2b2;
var videoConnection:NetConnection = new NetConnection();
videoConnection.connect(null);
var videoStream:NetStream = new NetStream(videoConnection);
var video:Video = new Video();
video.attachNetStream(videoStream);
video.height = 294;
video.width = 523;
videoStream.client = new Object();
var playingBool:Boolean = false;
var backup3 = new TextField();
var backup2 = new TextField();
var backup1 = new TextField();
function ParseFilms(filmInput:XML):void {
mC = new MovieClip();
var xmlALL:Number = filmInput.content.length();
var totalWidth:Number = xmlALL*546*2;
// CREATE THUMBNAILS
for (var m:int = 0; m < filmInput.content.length(); m++){
var loader1:Loader = new Loader();
var loader2:Loader = new Loader();
var loader3:Loader = new Loader();
image3 = new MovieClip();
image2 = new MovieClip();
image1 = new MovieClip();
backup3 = new TextField();
backup2 = new TextField();
backup1 = new TextField();
loader3.name = "film " + (m+1);
loader2.name = "film " + (m+1);
loader1.name = "film " + (m+1);
loader1.load(new URLRequest(filmInput.content[m].thumbnail_url.toString()));
loader2.load(new URLRequest(filmInput.content[m].thumbnail_url.toString()));
loader3.load(new URLRequest(filmInput.content[m].thumbnail_url.toString()));
backup3.text = filmInput.content[m].title.toString();
backup2.text = filmInput.content[m].title.toString();
backup1.text = filmInput.content[m].title.toString();
backup3.y = 147;
backup2.y = 147;
backup1.y = 147;
backup3.width = 400;
backup2.width = 400;
backup1.width = 400;
backup3.setTextFormat(flashText);
backup2.setTextFormat(flashText);
backup1.setTextFormat(flashText);
image1.x = (-546*xmlALL - 331.5) + (m*546);
image2.x = ((m*546) - 331.5);
image3.x = (546*xmlALL - 331.5) + (m*546);
image1.addChildAt(backup1,0);
image2.addChildAt(backup2,0);
image3.addChildAt(backup3,0);
image1.addChildAt(loader1,1);
image2.addChildAt(loader2,1);
image3.addChildAt(loader3,1);
mC.addChild(image1);
mC.addChild(image2);
mC.addChild(image3);
}
addChildAt(mC,2);
mC.y = 52;
//TEXT GENERATION
var nameText:TextField;
var desText:TextField;
var timeText:TextField;
var nameText1:TextField;
var desText1:TextField;
var timeText1:TextField;
var nameText2:TextField;
var desText2:TextField;
var timeText2:TextField;
//CREATE TEXT
for (var t:int = 0; t<filmInput.content.length();t++){
nameText = new TextField();
nameText.text = filmInput.content[t].title.toString();
nameText.x = (t*546 - 240);
nameText.setTextFormat(bigText);
nameText.y = 316;
nameText.height = 20;
nameText.width = 300;
mC.addChild(nameText);
nameText1 = new TextField();
nameText1.text = filmInput.content[t].title.toString();
nameText1.x = (-546*xmlALL - 240) + (t*546)
nameText1.setTextFormat(bigText);
nameText1.y = 316;
nameText1.width = 300;
mC.addChild(nameText1);
nameText2 = new TextField();
nameText2.text = filmInput.content[t].title.toString();
nameText2.x = (546*xmlALL - 240) + (t*546)
nameText2.setTextFormat(bigText);
nameText2.y = 316;
nameText2.width = 300;
mC.addChild(nameText2);
desText = new TextField();
desText.text = filmInput.content[t].description.toString();
desText.x = ((t*546) -240);
desText.setTextFormat(flashText);
desText.y = 341;
desText.width = 400;
desText.wordWrap = true;
mC.addChild(desText);
desText1 = new TextField();
desText1.text = filmInput.content[t].description.toString();
desText1.x = (-546*xmlALL - 240) + (t*546)
desText1.setTextFormat(flashText);
desText1.y = 341;
desText1.width = 450;
desText1.wordWrap = true;
mC.addChild(desText1);
desText2 = new TextField();
desText2.text = filmInput.content[t].description.toString();
desText2.x = (546*xmlALL - 240) + (t*546)
desText2.setTextFormat(flashText);
desText2.y = 341;
desText2.width = 450;
desText2.wordWrap = true;
mC.addChild(desText2);
timeText = new TextField();
timeText.text = filmInput.content[t].duration.toString();
timeText.x = (-546*xmlALL - 240) + (t*546)
timeText.setTextFormat(flashText);
timeText.y = 377;
timeText.width = 450;
timeText.wordWrap = true;
mC.addChild(timeText);
timeText1 = new TextField();
timeText1.text = filmInput.content[t].duration.toString();
timeText1.x = ((t*546) - 240);
timeText1.setTextFormat(flashText);
timeText1.y = 377;
timeText1.width = 400;
timeText1.wordWrap = true;
mC.addChild(timeText1);
timeText2 = new TextField();
timeText2.text = filmInput.content[t].duration.toString();
timeText2.x = (546*xmlALL - 240) + (t*546);
timeText2.setTextFormat(flashText);
timeText2.y = 377;
timeText2.width = 400;
timeText2.wordWrap = true;
mC.addChild(timeText2);
}
var preview:MovieClip;
var preview1:MovieClip;
var preview2:MovieClip;
mC.addEventListener(MouseEvent.CLICK, clickFilm);
bWatch.addEventListener(MouseEvent.CLICK, misWatch);
var NewNumber:Number = new Number;
function misWatch(evt:Event):void{
var url:URLRequest = new URLRequest(filmInput.content[NewNumber].player_url.toString());
navigateToURL(url, "_self");
}
// TRAILER PLAY
function clickFilm(evt:Event):void{
trace(mC.x);
trace(NewNumber);
if (playingBool == true){
//trace("close stream CLICK TO STOP");
videoStream.close();
video.clear();
playingBool = false;
} else if (playingBool == false){
//mC.x = (NewNumber)*546 - 331;
//trace("open stream");
video.x = (546*NewNumber) - 331;
videoStream.bufferTime = 10;
mC.addChild(video);
switch (category){
case 1:
videoStream.play("http://flannel.vo.llnwd.net/o16/trailers/F-NOO-RB-" + filmInput.content[NewNumber].trailer_link.toString());
break;
case 2:
videoStream.play("http://flannel.vo.llnwd.net/o16/trailers/F-TF-RB-" + filmInput.content[NewNumber].trailer_link.toString());
break;
}
playingBool = true;
}
}
//CLEAR ON END
videoStream.addEventListener(VideoEvent.COMPLETE, clearVid);
function clearVid(evt:Event):void{
videoStream.close();
video.clear();
playingBool = false;
//trace("close Stream END OF FILM");
}
video.addEventListener(VideoEvent.CLOSE, clearVid);
var boolCheck:Boolean = false;
var mCtween:TweenMax;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
mC.addEventListener(MouseEvent.ROLL_OVER, ifCheck);
mC.addEventListener(MouseEvent.ROLL_OUT, ifCheckEsc);
function ifCheckEsc(evt:Event):void{
boolCheck = false;
//trace("ifcheckesc made bool false");
}
function ifCheck(evt:Event):void{
boolCheck = true;
//trace("ifcheck made bool true");
}
function round(num:Number, precision:Number):Number{
var decimalPlaces:Number = Math.pow(10, precision);
return Math.round(decimalPlaces * num) / decimalPlaces;
}
function roundToNearest(roundTo:Number, value:Number):Number{
return round(value/roundTo, 0)*roundTo;
}
//QUICKTWEEN
var mcSnap:Number = new Number;
var mt:Number = 0;
function quickTween(evt:Event){
removeEventListener(Event.ENTER_FRAME, quickTween);
mcSnap = roundToNearest(546,mC.x);
mCtween = TweenMax.to(mC, .5, {ease:Strong.easeOut, x:mcSnap});
mCtween.addEventListener(TweenEvent.COMPLETE, visibleButton);
}
//VISIBLEBUTTON
function visibleButton(evt:TweenEvent):void{
mCtween.removeEventListener(TweenEvent.COMPLETE, visibleButton);
mBlock.visible = false;
}
stage.addEventListener(MouseEvent.MOUSE_MOVE, dead);
function dead(evt:Event):void{
if (mouseX >= 380 && mouseX <= 570){
boolCheck = false;
//trace("dead made bool it false");
}
}
// // // // // // // // // // // // // // // // Slide Movement // // // // // // // // // // // //
//ONENTERFRAME
var half:Number = xmlALL*546;
trace(half);
var ycenter:Number = -475;
var speed:Number = 1/20;
function onEnterFrame(event:Event):void{
widthDivision = Math.round(((mC.width)/3)/546);
trace(widthDivision);
trace(mC.x);
if (Math.round(mC.x) -546 > 0){
NewNumber = (Math.round(((Math.round(mC.x)-1092) - (Math.round(mC.width)/3))/-546) - 1);
} else if (mC.x - 546 < 0){
NewNumber = (Math.round(((Math.round(mC.x) - 546)/-546)));
}
if (mouseX >= 210 && mouseX <= 730 && mouseY >= 50 && mouseY <= 350){
bPlay.visible = true;
} else {
bPlay.visible = false;
}
if (boolCheck == true){
if (mouseX <= 200 || mouseX >= 840 && playingBool == true){
videoStream.close();
video.clear();
playingBool = false;
}
var distance:Number = ycenter + mouseX;
mC.x -=(distance*speed);
mBlock.visible = true;
//SWITCHBACK ACTION
if (widthDivision > 2){
if (mC.x <= -half + 3*546) {
mC.x = 3*546;
}
if (mC.x >= half) {
mC.x = 0;
}
} else {
if (mC.x <= -546){
mC.x = half - 546;
}
if (mC.x >= half){
mC.x = 0;
}
}
} else if (boolCheck == false){
if (mouseX <= 200 || mouseX >= 840 && playingBool == true){
videoStream.close();
video.clear();
playingBool = false;
}
addEventListener(Event.ENTER_FRAME, quickTween);
}
}
}
thanks!