Hi,
I am which requires few things like;
- swf should play if client open it at his end (this will be detected by checking a text file which has variable on the local drive say “C”)
- swf should preload if finds flashvars from HTML file on server by user
- if both of the above conditions dosent work then swf should not play
I have succeeded some what in this. if i run the file without preloader it work fine. but when i add preloader to it something goes wrong.
Please check the code;
import flash.text.TextField;
import flash.events.ProgressEvent;
import flash.events.Event;
import flash.display.MovieClip;
var Progress_txt:TextField = new TextField();
var myFlashVar:String;
var myVar:String;
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
for (myVar in paramObj)
{
myFlashVar = String(paramObj[myVar]);
}
checkFlashvar();
function checkFlashvar():void
{
trace("CHECKING Flash VAR");
if (myFlashVar=="varInHTML")
{
InternalPreloader();
trace("pass var found");
}
else
{
trace("VAR NOT FOUND");
gotoLocalVar();
}
}
function gotoLocalVar():void
{
var myLoader:URLLoader = new URLLoader();
myLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
myLoader.addEventListener(Event.COMPLETE, chkLocalVar);
myLoader.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
myLoader.load(new URLRequest("C:/key.txt"));
function chkLocalVar(event:Event):void
{
if (myLoader.data.passKey == "grantAccess")
{
trace("pass key found");
InternalPreloader();
}
else
{
trace("Local VAR NOT FOUND");
stop();
parent.removeChild(this);
}
}
}
function onLoadError(evt:IOErrorEvent):void
{
trace("TXT FILE NOT FOUND");
stop();
parent.removeChild(this);
}
function InternalPreloader():void
{
stop();
Progress_txt.x = stage.stageWidth / 2;
Progress_txt.y = stage.stageHeight /2;
addChild(Progress_txt);
trace("load progress event");
loaderInfo.addEventListener(ProgressEvent.PROGRESS,onProgress);
loaderInfo.addEventListener(Event.COMPLETE, onComplete);
}
function onProgress(p:ProgressEvent):void
{
Progress_txt.text = String(Math.floor((p.bytesLoaded/p.bytesTotal)*100));
trace("checking progress");
}
function onComplete(d:Event):void
{
trace("loaded, start my movie.");
play();
loaderInfo.removeEventListener(ProgressEvent.PROGRESS, onProgress);
loaderInfo.removeEventListener(Event.COMPLETE, onComplete);
}
i am not getting where i am doing wrong thing…