Hi,
I have some dynamic text in an swf, that sits in an html doc, with the width & height set to 100%, in order to have the swf scale depending on screen size.
Everything works really well apart from a dynamic text field (which pulls in slide numbers) which disappears or reappears depending on the size of the window or when the window is resized.
Does anyone know why this would happen? Any help would be greatly received.
Apologies for the amount of code.
Small bit from interfaceLoad.as
public function sNum(sN):void {// Set and change Slide Number Text
var sNumTxt:textF = new textF();
addChild(sNumTxt);
intFrame.slideTxt.text = "Slide: "+(sN=sN+1);
}
Rest of code from main.as
package courseClasses{
import flash.text.*;
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.Stage;
import flash.geom.Point;
import flash.net.LocalConnection;
import flash.filters.BitmapFilter;
import flash.filters.BitmapFilterQuality;
import flash.filters.DropShadowFilter;
import flash.display.StageScaleMode;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.net.navigateToURL
import com.yahoo.astra.fl.controls.Tree;
import com.yahoo.astra.fl.controls.treeClasses.*;
import com.yahoo.astra.fl.controls.treeClasses.TreeDataProvider;
import courseClasses.bgLoad;
//import courseClasses.footerNav;
import courseClasses.SCORM;
import courseClasses.interfaceLoad;
import courseClasses.textF;
import XMLloader.com.utils.XMLLoader;
import gs.TweenLite;
import gs.easing.*;
import gs.plugins.*;
public class mcMain extends MovieClip {
TweenPlugin.activate([DropShadowFilterPlugin,GlowFilterPlugin]);
private var modXMLLoader:XMLLoader;//XML Loading class
private var bg:bgLoad;//bg Loader
//private var test:footerNav;//footer nav bg
private var footNav:bgLoad;//footer nav bg 2
//private var medLogo:bgLoad;// Logo Loader
private var reconLogo:bgLoad;//Logo Loader
//private var mscbLogo:bgLoad;// MSCB Logo
private var titleTxt:textF;//Main text for body & title
private var extSwf:bgLoad;// External swf file
private var nxtBtn:bgLoad;//Next Btn
private var bckBtn:bgLoad;//Back Btn
private var tmmWin:tmm;// Tell me more window access via interface load
private var mState:Array;//is there More content for Tell me more drop down
private var mImage1:Array;// Image 1 from XML more section
private var mImage2:Array;// Image 2 from XML more section
private var mImage3:Array;// Image 3 from XML more section
private var mImage4:Array;// Image 3 from XML more section
private var slideExt:Array;// is the slide external
private var slideCount:Number;// What slide is the user at
private var slideLength:Number;// How many slides
private var extMc:Boolean;// swf or text from XML
private var titleArray:Array;//Section titles
private var treeXml:XML;// tree menu XML data
private var intLoad:interfaceLoad;//Load right pane interface
public var mcM_lc:LocalConnection;//Local connectionf for external SWF
private var pbMove:Boolean;//Has the user gone back?
var nv:notVisited;//nv Text
/****Scorm Variables*****/
public var lessonStatus:String;
public var lmsConnected:Boolean;
public var success:Boolean;
public var scorm:SCORM;
public var bookMark:String;
/****Scorm Variables*****/
public function mcMain():void {
nv = new notVisited();
addChild(nv);
nv.alpha=0;
pbMove=true;
/***Connect to external swf***/
mcM_lc=new LocalConnection ;
mcM_lc.client=this;
mcM_lc.connect("nextLoad");
/**Connect to external swf***/
scorm=new SCORM ;
lmsConnected=scorm.connect();
if (lmsConnected) {
//scorm.set("cmi.core.lesson_status", "complete");
//scorm.set("cmi.suspend_data","10");
//scorm.set("cmi.core.lesson_location","19");
var bookmark:String=scorm.get("cmi.core.lesson_location");
slideCount=Number(bookmark);
modXMLLoader=new XMLLoader(["assets/XML/content.xml","assets/XML/treeMenu.xml"]);
modXMLLoader.addEventListener(Event.COMPLETE,XMLLoaded);
}
//var test:footerNav = new footerNav();
//addChild(test);
initStage();
bg=new bgLoad ;
footNav=new bgLoad ;
//medLogo=new bgLoad ;
reconLogo=new bgLoad ;
//mscbLogo=new bgLoad ;
addChild(bg);
addChild(footNav);
//addChild(medLogo);
addChild(reconLogo);
//addChild(mscbLogo);
footNav.bgLoading("assets/gui/footerNavBg.swf",16,687,100,950,1,1,"footNav",0,false);
//medLogo.bgLoading("assets/gui/medwayLogo.swf",25,25,100,100,1,1,"medLogo",1,false);// "location",X,Y,BmpHeight,BmpWidth,scaleX,scaleY Set background properties
reconLogo.bgLoading("assets/gui/reconstruct_logo_s.png",35,710,32,143,1,1,"reconLogo",1,false);
//mscbLogo.bgLoading("assets/gui/mscb-logo.png",875,20,100,110,0.8,0.8,"mscbLogo",1,false);
bg.bgLoading("assets/gui/bg.swf",11,17,this.stage.stageHeight,this.stage.stageWidth,1,1,"bgImage",0,false);
reconLogo.addEventListener(MouseEvent.CLICK, gotoPage);
reconLogo.addEventListener(MouseEvent.ROLL_OVER, over);
reconLogo.addEventListener(MouseEvent.ROLL_OUT, out);
function gotoPage(event:MouseEvent):void
{
var targetURL:URLRequest = new URLRequest("http://www.recon.co.uk/");
navigateToURL(targetURL);
}
function over(event:MouseEvent):void
{
buttonMode = true
}
function out(event:MouseEvent):void
{
buttonMode = false
}
}
private function initStage():void {
stage.scaleMode=StageScaleMode.SHOW_ALL;
stage.addEventListener(Event.RESIZE, resizeHandler);
}
private function resizeHandler(event:Event):void {
bg.x = (bg.stage.stageWidth / 2) - (bg.width / 2);
bg.y = (bg.stage.stageHeight / 2) - (bg.height / 2);
}
private function XMLLoaded(e:Event):void {
var mArray:Array=new Array;//More Text
var tTitle:String;
mState=new Array ;//More text content
mImage1=new Array ;//More image 1
mImage2=new Array ;//More image 2
mImage3=new Array ;//More image 3
mImage4=new Array ;//More image 4
titleArray=new Array ;
slideExt=new Array ;
treeXml=modXMLLoader.getList[1];
slideLength=modXMLLoader.getList[0].slide.length();// how many slides
trace("this :" + slideLength);
for (var i:Number=0; i < slideLength; i++) {
titleArray*=modXMLLoader.getList[0].slide*.title.toString();
mArray*=modXMLLoader.getList[0].slide*.more;
mState*=modXMLLoader.getList[0].slide*.more.@content;
mImage1*=modXMLLoader.getList[0].slide*.more.@image1;
mImage2*=modXMLLoader.getList[0].slide*.more.@image2;
mImage3*=modXMLLoader.getList[0].slide*.more.@image3;
mImage4*=modXMLLoader.getList[0].slide*.more.@image4;
slideExt*=modXMLLoader.getList[0].slide*.@external;
}
tTitle=modXMLLoader.getList[0].moreTitle;
var titleTxt:textF=new textF;
addChild(titleTxt);
//titleTxt.textFnc(30,85,650,200,modXMLLoader.getList[0].course_title,18,"cTitle",0,1.4,"0x006BB6",false);//temp will get from xml
intLoad=new interfaceLoad ;
addChild(intLoad);//Load Right Interface
intLoad.iLoad(859,221);//right menu position
intLoad.tS=slideLength;
trace(intLoad.tS + " my friend");
intLoad.moreArray=mArray;//Assign more info to interface load
intLoad.moreState=mState;//Assign more state to interface load
intLoad.mImage1=mImage1;//Assign more image to interface load
intLoad.mImage2=mImage2;//Assign more image to interface load
intLoad.mImage3=mImage3;//Assign more image to interface load
intLoad.mImage4=mImage4;//Assign more image to interface load
intLoad.tmmTitle=tTitle;// Title for tell me more
intLoad.treeXml=treeXml;//Assign Tree XML data
intLoad.sN=slideCount;
intLoad.bLoad();//Load I Buttons
slideDisplay(slideCount);
stage.addEventListener(Event.ENTER_FRAME,qNext);//Check qNav state
}
/*************Send and receive scorm data to and from ext swf*************/
public function rec():void {
var susData:String = scorm.get("cmi.suspend_data");
extSwf.screenMC.insert(susData);
}
public function sSend(sus:String):void {
scorm.set("cmi.suspend_data",sus);
scorm.save();
}
public function cSend(com:String):void {
scorm.set("cmi.comments",com);
scorm.save();
}
public function recCom():void {
var comData:String = scorm.get("cmi.comments");
extSwf.screenMC.insert(comData);
}
/*************Send and receive sscorm data to and from ext swf*************/
private function slideDisplay(sN:Number):void {
intLoad.sNum(sN);//Change external interface slide number
titleTxt=new textF ;//Title Text field
titleTxt.name="bodyText";
var bodyTxt:textF=new textF;//Body Text field
var cLength:Number=modXMLLoader.getList[0].slide.length();//Course Length
addChild(titleTxt);
addChild(bodyTxt);
//title position
switch (slideExt[sN].toString()) {
case "true" ://External SWF, load .swf
titleTxt.textFnc(110,105,750,200,modXMLLoader.getList[0].slide[sN].title.toString(),20,"titleText",0,1,"0x00000",true);
extSwf=new bgLoad ;
addChild(extSwf);
if (sN==6) {
extSwf.bgLoading2(modXMLLoader.getList[0].slide[sN].@path,30,140,100,100,1,1,"extSwf",0,true);
} else {
extSwf.bgLoading(modXMLLoader.getList[0].slide[sN].@path,30,140,100,100,1,1,"extSwf",0,true);
}
nvBtns(slideExt[sN]);
break;
case "false" :// Text based load from XML
titleTxt.textFnc(110,105,750,200,modXMLLoader.getList[0].slide[sN].title.toString(),20,"lBegin",0,1,"0x00000",true);
titleTxt.textFnc(110,120,760,900,modXMLLoader.getList[0].slide[sN].content.toString(),18,"lBegin",0,2,"0x00000",true);
nvBtns(slideExt[sN]);
break;
}
}
private function qNext(e:Event):void {
if (intLoad.rState) {//If the reload button is pressed
intLoad.rState=false;
remove();
slideDisplay(slideCount);
}
setChildIndex(intLoad,numChildren - 1);//Keep intLoad on top depth
if (intLoad.bState) {//Check to see if aNav has been pressed;
switch (extMc) {
case true :
intLoad.bState=false;
qProceed();
break;
case false :
remove();
intLoad.bState=false;
qProceed();
break;
default :
break;
}
function qProceed():void {
if (intLoad.frameNum < slideCount) {
slideDisplay(intLoad.frameNum);
} else if (intLoad.frameNum > slideCount) {
nv.x=677;///Warning messsage
nv.y=58;
setChildIndex(nv,numChildren-1);
TweenLite.to(nv,0.5,{alpha:1,ease:Linear.easeNone,overwrite:0});
TweenLite.to(nv,0.5,{alpha:0,delay:4,ease:Linear.easeNone,overwrite:0});
slideDisplay(slideCount);
} else {
slideDisplay(slideCount);
}
}
}
}
public function nextSwf():void {//Function called by external swf to trigger next button/load next slide
nxtBtn.bgLoading("assets/gui/nextBtn.swf",875,710,35,67,1,1,"nxtBtn",1,false);
nxtBtn.addEventListener(MouseEvent.MOUSE_DOWN,rExtSwf);
nxtBtn.addEventListener(MouseEvent.MOUSE_OVER,bOver);
nxtBtn.buttonMode=true;
nxtBtn.scaleX=1;
nxtBtn.scaleY=1;
addChild(nxtBtn);
function rExtSwf(e:MouseEvent):void {
nxtBtn.removeEventListener(MouseEvent.MOUSE_DOWN,rExtSwf);
nxtBtn.addEventListener(MouseEvent.MOUSE_OVER,bOver);
nxtBtn.buttonMode=false;
nxtBtn.scaleX=1;
nxtBtn.scaleY=1;
TweenLite.to(bckBtn,0.5,{alpha:0,ease:Linear.easeNone,overwrite:0});
TweenLite.to(nxtBtn,0.5,{alpha:0,ease:Linear.easeNone,overwrite:0,onComplete:nextSl});
}
}
private function nvBtns(ext:Boolean):void {//Navigation buttons
nxtBtn=new bgLoad ;
addChild(nxtBtn);
bckBtn=new bgLoad ;
addChild(bckBtn);
nxtBtn.name="nxtBtn";
bckBtn.name="bckBtn";
if (slideCount > 0) {
bckBtn.bgLoading("assets/gui/backBtn.swf",800,710,35,67,1,1,"bckBtn",4,false);
bckBtn.addEventListener(MouseEvent.MOUSE_DOWN,btnEvt);
bckBtn.addEventListener(MouseEvent.MOUSE_OVER,bOver);
bckBtn.buttonMode=true;
bckBtn.scaleX=1;
bckBtn.scaleY=1;
}
if (slideExt[slideCount] == "false") {
if (slideCount < slideLength - 1) {
nxtBtn.bgLoading("assets/gui/nextBtn.swf",875,710,35,67,1,1,"nxtBtn",4,false);
nxtBtn.addEventListener(MouseEvent.MOUSE_DOWN,btnEvt);
nxtBtn.addEventListener(MouseEvent.MOUSE_OVER,bOver);
nxtBtn.buttonMode=true;
nxtBtn.scaleX=1;
nxtBtn.scaleY=1;
}
}
function btnEvt(e:MouseEvent):void {
if (slideExt[slideCount] == "false") {
nxtBtn.removeEventListener(MouseEvent.MOUSE_DOWN,btnEvt);
nxtBtn.buttonMode=false;
}
bckBtn.removeEventListener(MouseEvent.MOUSE_DOWN,btnEvt);
bckBtn.buttonMode=false;
switch (e.target.name) {
case "nxtBtn" :
nextSl();
break;
case "bckBtn" :
prvSl();
break;
}
}
}
public function nextSl():void {//next slide
remove();
slideCount++;
if (slideCount == slideLength) {//course complete?
scorm.set("cmi.core.lesson_status","complete");
scorm.save();
scorm.disconnect();
}
scorm.set("cmi.core.lesson_location",String(slideCount));
scorm.save();
if (slideCount <16) {
slideDisplay(slideCount);
} else {
slideDisplay(16);
}
if (pbMove) {
//intLoad.progressBar(true,NaN);
}
pbMove=true;
}
private function prvSl():void {//previous slide
remove();
slideCount=slideCount - 1;
slideDisplay(slideCount);
pbMove=false;
}
private function remove():void {
if (slideExt[slideCount] == "true") {
removeChild(extSwf);
}
removeChild(titleTxt);
removeChild(nxtBtn);
removeChild(bckBtn);
if (mState[slideCount] == true) {// if this slide has tell me more text
intLoad.clsTmm();//remove
}
}
private function bOver(e:MouseEvent):void {
TweenLite.to(e.currentTarget,.5,{dropShadowFilter:{color:0xFFFFFF,alpha:0.7,blurX:5,blurY:5,distance:2},overwrite:0});
e.currentTarget.addEventListener(MouseEvent.MOUSE_OUT,bOut);
function bOut(e:MouseEvent):void {
TweenLite.to(e.currentTarget,.5,{dropShadowFilter:{color:0xFFFFFF,alpha:0,blurX:0,blurY:0,distance:0},overwrite:0});
}
}
}
}