Isaac,
I wanted to show you, and anyone interested, that your idea of frame label
navigation in conjunction with XML is doable.
To use this example just start a fresh fla, build out the fla according to
the structure laid out under 'Structure:' in the comment below, then copy
and paste the code into frame 1 of the actions layer.
/*
FrameLabelNav.fla Example
Author: Keith Reinfeld
FlashPlayer 9, AS3
Structure:
Main Timeline:
Three layers: actions
buttons
textfields
actions layer: five blank keyframes
frame 1: Actionscript (no frame label)
frame 2: frame label: intro
frame 3: frame label: labelone
frame 4: frame label: labeltwo
frame 5: frame label: labelthree
buttons layer: two buttons spanning all five frames
SimpleButton: prevBtn
SimpleButton: nextBtn
textfields layer:
frame 1: blank keyframe
frames 2 - 5:
TextField: content_txt spanning last four frames
*/
// Timeline code in frame 1:
stop();
// The order of the XML elements doesn't matter.
// However, each name attribute value must be unique.
var contentXML:XML = frames
frame name=labeltwo text=This is the frame with the label 'labeltwo'./
frame name=intro text=This is the frame with the label 'intro'./
frame name=labelthree text=This is the frame with the label
'labelthree'./
frame name=labelone text=This is the frame with the label 'labelone'./
frame name=labelnone text=There is no frame with the label
'labelnone'./
/frames;
// Init vars
var labels:Array = this.currentLabels;
var frameIndex:uint = 0;
var frameMax:uint = labels.length - 1;
var nextLbl:FrameLabel = labels[frameIndex];
// Listeners
prevBtn.addEventListener(MouseEvent.CLICK, navPrev);
nextBtn.addEventListener(MouseEvent.CLICK, navNext);
this.addEventListener(Event.ENTER_FRAME, navTo);
function navPrev(event:MouseEvent):void {
frameIndex = (frameIndex 0)? --frameIndex: frameIndex;
this.addEventListener(Event.ENTER_FRAME, navTo);
}
function navNext(event:MouseEvent):void {
frameIndex = (frameIndex frameMax)? ++frameIndex: frameIndex;
this.addEventListener(Event.ENTER_FRAME, navTo);
}
function navTo(event:Event):void{
nextLbl = labels[frameIndex];
this.gotoAndStop(nextLbl.name);
if(this.content_txt != null){
this.removeEventListener(Event.ENTER_FRAME, navTo);
updateTextField();
}
}
function updateTextField():void{
this.content_txt.text =
contentText(contentXML,frame,name,nextLbl.name,text)+ (Frame:
+this.currentFrame+);
}
function
contentText(node:XML,element:String,att1:String,val1:String,att2:String):Str
ing{
return node.elements(element).(@[att1] == val1)@[att2];
}
Questions?
HTH
Keith Reinfeld
Home Page: http://keithreinfeld.home.comcast.net
___
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders