This is what the XML doc looks like:
<images>
<pic>
<image>photos/pic17.jpg</image>
<thumb>thumbs/pic17.jpg</thumb>
<title>Kevin's Evil Face</title>
<desc>This is Kevin layin down some tracks. Boho Digitalia - February 2008</desc>
</pic>
<pic>
<image>photos/pic18.jpg</image>
<thumb>thumbs/pic18.jpg</thumb>
<title>Matt</title>
<desc>This is Matt singin some live bgv's</desc>
</pic>
<pic>
<image>photos/pic26.jpg</image>
<thumb>thumbs/pic26.jpg</thumb>
<title>The 4923</title>
<desc>Once upon a time, Matt wasn't in the band yet and Kevin played bass. Kilby Court - A Really Long Time Ago</desc>
</pic>
</images>
And this is how you load it into Flash and parse it:
var thumbs:Array = new Array();
var images:Array = new Array();
var titles:Array = new Array();
var descs:Array = new Array();
///////////////////////////////////
///// vvvvvv LOAD XML vvvvvv //////
//+++++++++++++++++++++++++++++++//
var loader:URLLoader = new URLLoader();
var xml:XML = new XML();
loader.addEventListener(Event.COMPLETE, loadXML);
loader.load(new URLRequest("images.xml"));
function loadXML(event:Event):void{
xml = new XML(event.target.data);
var total:Number = xml.pic.length();
for(var i:int = 0; i < total; i++){
thumbs[i] = xml.pic.thumb.text()[i];
images[i] = xml.pic.image.text()[i];
titles[i] = xml.pic.title.text()[i];
descs[i] = xml.pic.desc.text()[i];
}
loadThumbs();
}
//+++++++++++++++++++++++++++++++//
///////////////////////////////////
///////////////////////////////////
///// LOAD THE THUMBNAILS /////
function loadThumbs():void{
// do whatever you need here
trace(thumbs);
}
This will make 4 arrays (thumbs, images, titles, descs) and populates them with everything from your XML file. I still haven't taken the time to figure out how to parse it into a 2D array, so if anyone wants to tell me how to do it, that would rock.
Wednesday, June 18, 2008
Friday, June 13, 2008
As3 Music Player
I reprogrammed the player I made for my band's website in as3. Check it out:Download Files
Somehow, and who knows how, the songs load super fast with the new sound object, which is awesome! I didn't even need to put a preloader on this one (which is good since I don't know how to make one yet). Some things about sound now are a little different but they aren't too annoying. The bar goes a little crazy when you click on it (to go to a different section in the song). It doesn't so that when I just export the swf. I'm hoping it's just some weird blogger thing.
Issues this covers: AS3, Actionscript 3.0, Sound, SoundChannel, SoundTransform, volume
Somehow, and who knows how, the songs load super fast with the new sound object, which is awesome! I didn't even need to put a preloader on this one (which is good since I don't know how to make one yet). Some things about sound now are a little different but they aren't too annoying. The bar goes a little crazy when you click on it (to go to a different section in the song). It doesn't so that when I just export the swf. I'm hoping it's just some weird blogger thing.
Issues this covers: AS3, Actionscript 3.0, Sound, SoundChannel, SoundTransform, volume
Labels:
actionscript 3.0,
AS3,
Sound,
sound object,
SoundChannel,
SoundTransform,
volume
Wednesday, June 11, 2008
Intro/Outro
This used to be a really simple task, but it's quite the ordeal in as3, but I figured it out:
View it Here
download fla's
It seems like there should be a way easier way of doing this.
Issues this covers: load movie, tween class, enter frame, target paths, variables
oh by the way, you have to do targets like this now:
MovieClip(this.parent.parent.parent).loadNextMovie(); //tell main timeline to call loadNextMovie function from loaded movie's timeline
View it Here
download fla's
It seems like there should be a way easier way of doing this.
Issues this covers: load movie, tween class, enter frame, target paths, variables
oh by the way, you have to do targets like this now:
MovieClip(this.parent.parent.parent).loadNextMovie(); //tell main timeline to call loadNextMovie function from loaded movie's timeline
Tuesday, June 10, 2008
new loadMovie
You don't need a container to load an external file anymore:
var loadMovie = new Loader();
addChild(loadMovie );
loadMovie .load(new URLRequest("page1.swf"));
but if you do want it to load into a certain movie or container, do it like this:
var loadMovie = new Loader();
container_mc.addChild(loadMovie );
loadMovie .load(new URLRequest("page1.swf"));
Apparently you can't just load a new movie in place of the new one anymore. You have to boot the old one out and then load in the new one:
container.removeChild(loadMovie);
loadMovie = new Loader();
container.addChild(loadMovie);
loadMovie.load(new URLRequest("page2.swf"));
Talking to the new movie's timeline is different too, you'll have to cast it (it's called):
MovieClip(loadMovie.content).gotoAndStop("outro");
So far the new way to load a movie is the most annoying change about as3.
var loadMovie = new Loader();
addChild(loadMovie );
loadMovie .load(new URLRequest("page1.swf"));
but if you do want it to load into a certain movie or container, do it like this:
var loadMovie = new Loader();
container_mc.addChild(loadMovie );
loadMovie .load(new URLRequest("page1.swf"));
Apparently you can't just load a new movie in place of the new one anymore. You have to boot the old one out and then load in the new one:
container.removeChild(loadMovie);
loadMovie = new Loader();
container.addChild(loadMovie);
loadMovie.load(new URLRequest("page2.swf"));
Talking to the new movie's timeline is different too, you'll have to cast it (it's called):
MovieClip(loadMovie.content).gotoAndStop("outro");
So far the new way to load a movie is the most annoying change about as3.
AS3 Tween Class
The tween class is pretty much the same as it was in AS2. When you import everything, you just have to change 'mx' to 'fl'. Also if you want to do a tween event you have to import TweenEvent:
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
var tw1:Tween = new Tween(object,"x",Strong.easeOut,start,end,time,true);
If you want to do an event (like the old onMotionFinished), it's a little different now. You have to create an event listener like this:
tw1.addEventListener(TweenEvent.MOTION_STOP, tweenStop);
function tweenStop(event:TweenEvent):void{
var tw2:Tween = new Tween(movieclip,"x",Back.easeOut,movieclip.x,300,1,true);
}
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
var tw1:Tween = new Tween(object,"x",Strong.easeOut,start,end,time,true);
If you want to do an event (like the old onMotionFinished), it's a little different now. You have to create an event listener like this:
tw1.addEventListener(TweenEvent.MOTION_STOP, tweenStop);
function tweenStop(event:TweenEvent):void{
var tw2:Tween = new Tween(movieclip,"x",Back.easeOut,movieclip.x,300,1,true);
}
Monday, June 9, 2008
Tweening Experiments (Enter Frame)
CODE:
var myBrain:MovieClip = new MovieClip(); //create a new empty movie clip
var xPos:Number;
var yPos:Number;
box_mc.addEventListener(Event.ENTER_FRAME, rotate); //add new enter frame, call rotate function
stage.addEventListener(MouseEvent.CLICK, moveBox); //add new mouse event, call moveBox function
function rotate(event:Event):void{
box_mc.rotation += 8; //rotate box by 8 degrees 31 times/second
}
function moveBox(event:MouseEvent):void{
xPos = mouseX; //set xPos variable
yPos = mouseY; //set yPos veriable
myBrain.addEventListener(Event.ENTER_FRAME, moveIt); //add new enter frame, call moveIt
}
function moveIt(event:Event):void{
if(Math.abs(xPos-box_mc.x)<1 && Math.abs(yPos-box_mc.y)<1){ //when the box gets real close to destination...
myBrain.removeEventListener(Event.ENTER_FRAME, moveIt); //remove the enter frame that is on myBrain
box_mc.x = xPos; //snap box into position
box_mc.y = yPos; // " " "
}else{
box_mc.x += .1 * (xPos - box_mc.x); //simple easing formula
box_mc.y += .1 * (yPos - box_mc.y); //simple easing formula
}
}
Friday, May 9, 2008
Moving Onward
Time to start learning AS3 again. This blog is going to start being FILLED with useful posts. To start it off, I'm posting this helpful as3 link:
Getting Started with ActionScript 3.0 in Adobe Flash CS3
Getting Started with ActionScript 3.0 in Adobe Flash CS3
Monday, September 17, 2007
Arrays
Arrays are the same:
var verbs:Array = ["jumped", "ran", "flew"];
//2D array:
var multiD:Array = [
["row 0 col 0","row 0 col 1"],
["row 1 col 0","row 1 col 1"],
["row 2 col 0","row 2 col 1"],
["row 3 col 0","row 3 col 1"]
];
Here is a list of Properties:
array.pop() = This method removes the last item from an array
array.push() = The push method adds a series of values to the end of an existing array
array.shift() = removes a value from the beginning of array
array.unshift() = adds a value or series of values to the beginning of your array
array.concat() = merges two arrays together ... arrayOne.concat(arrayTwo);
array.slice() = can create array with certain elements of existing array
array.sort() = will sort an array (alphabetically by default)
array.reverse() = Reverses the direction of an array.
slice() = Extracts a section of an array and returns it as a new array.
array.toString = Returns a string value representing the elements in the Array object.
var myArray:Array = new Array(); //creates a new blank array
some links to help:
http://www.kirupa.com/developer/actionscript/array2.htm
Adobe Array Help
var verbs:Array = ["jumped", "ran", "flew"];
//2D array:
var multiD:Array = [
["row 0 col 0","row 0 col 1"],
["row 1 col 0","row 1 col 1"],
["row 2 col 0","row 2 col 1"],
["row 3 col 0","row 3 col 1"]
];
Here is a list of Properties:
array.pop() = This method removes the last item from an array
array.push() = The push method adds a series of values to the end of an existing array
array.shift() = removes a value from the beginning of array
array.unshift() = adds a value or series of values to the beginning of your array
array.concat() = merges two arrays together ... arrayOne.concat(arrayTwo);
array.slice() = can create array with certain elements of existing array
array.sort() = will sort an array (alphabetically by default)
array.reverse() = Reverses the direction of an array.
slice() = Extracts a section of an array and returns it as a new array.
array.toString = Returns a string value representing the elements in the Array object.
var myArray:Array = new Array(); //creates a new blank array
some links to help:
http://www.kirupa.com/developer/actionscript/array2.htm
Adobe Array Help
Thursday, September 6, 2007
Text Fields
This is how you can create a new text field with actionscript yo (amongst other things):
var myText:TextField = new TextField(); //make a new text field
var myFormat:TextFormat = new TextFormat(); //make text format object
myFormat.font = "Verdana"; //set font
myFormat.color = 0xFF0000; //set text color
myFormat.size = 14; //set size
addChild(myText); //add it to the stage (top-left)
myText.text = "text goes in here"; //put text into it
myText.autoSize = TextFieldAutoSize.LEFT; //text will auto size from the left
myText.setTextFormat(myFormat); //You need this before you can modify proporties
Capture data from text field:
//assuming there is a button called "submit_btn" and a text field called "name_txt"
var body_txt:TextField = new TextField(); //create a text field called "body_txt"
yourName:String; //set up variable
body_txt.x = 98; //you can place text where ever
body_txt.y = 66;
submit_btn.addEventListener(mouseEvent.CLICK, onClick); //set up click mouse event
function onClick(event:MouseEvent):void{
addChild(body_txt); //place body_txt on stage (this is where user will type)
yourName = body_txt.text; //put whatever user types into yourName variable
name_txt.text = "Hi " + yourName + "!"; //put that text in the name_txt field (plus "hi")
}
Loading External Text File:
//Assume there's a field called external_txt
var externalReq:URLRequest = new URLRequest("news.txt"); //new URL Request (request file)
var externalLoad:URLLoader = new URLLoader(); //new URL Loader
externalLoad.load(externalReq); //Start Loading
externalLoad.addEventListener(Event.COMPLETE, textReady); //Listen for load completion
external_txt.wordWrap = true; //this will wrap the text
function textReady(event:Event):void{
external_txt.text = event.target.data; //places data in txt file into text field
}
Scroll Text
Assume there is a text field full of dynamic text called myText_txt. Also assume there is a button called up_btn and one called down_btn:
up_btn.addEventListener(MouseEvent.CLICK, scrollUp);
down_btn.addEventListener(MouseEvent.CLICK, scrollDown);
function scrollUp(event:MouseEvent):void{
external_txt.scrollV --; //this moves the text down
}
function scrollDown(event:MouseEvent):void{
external_txt.scrollV ++; //this moves the text up
}
var myText:TextField = new TextField(); //make a new text field
var myFormat:TextFormat = new TextFormat(); //make text format object
myFormat.font = "Verdana"; //set font
myFormat.color = 0xFF0000; //set text color
myFormat.size = 14; //set size
addChild(myText); //add it to the stage (top-left)
myText.text = "text goes in here"; //put text into it
myText.autoSize = TextFieldAutoSize.LEFT; //text will auto size from the left
myText.setTextFormat(myFormat); //You need this before you can modify proporties
Capture data from text field:
//assuming there is a button called "submit_btn" and a text field called "name_txt"
var body_txt:TextField = new TextField(); //create a text field called "body_txt"
yourName:String; //set up variable
body_txt.x = 98; //you can place text where ever
body_txt.y = 66;
submit_btn.addEventListener(mouseEvent.CLICK, onClick); //set up click mouse event
function onClick(event:MouseEvent):void{
addChild(body_txt); //place body_txt on stage (this is where user will type)
yourName = body_txt.text; //put whatever user types into yourName variable
name_txt.text = "Hi " + yourName + "!"; //put that text in the name_txt field (plus "hi")
}
Loading External Text File:
//Assume there's a field called external_txt
var externalReq:URLRequest = new URLRequest("news.txt"); //new URL Request (request file)
var externalLoad:URLLoader = new URLLoader(); //new URL Loader
externalLoad.load(externalReq); //Start Loading
externalLoad.addEventListener(Event.COMPLETE, textReady); //Listen for load completion
external_txt.wordWrap = true; //this will wrap the text
function textReady(event:Event):void{
external_txt.text = event.target.data; //places data in txt file into text field
}
Scroll Text
Assume there is a text field full of dynamic text called myText_txt. Also assume there is a button called up_btn and one called down_btn:
up_btn.addEventListener(MouseEvent.CLICK, scrollUp);
down_btn.addEventListener(MouseEvent.CLICK, scrollDown);
function scrollUp(event:MouseEvent):void{
external_txt.scrollV --; //this moves the text down
}
function scrollDown(event:MouseEvent):void{
external_txt.scrollV ++; //this moves the text up
}
Thursday, August 30, 2007
Random Numbers
Generating random number is the same as it was in AS2, but I always forget how so here are a few ways:
Math.round(Math.random() * 1000); //Gets a whole number anywhere from 0 - 1000
Math.floor(Math.random() * 10); //From 0 - 9 (cuz floor always rounds down)
Math.ceil(Math.random() * 10); //from 1 - 10 (cuz ceil always rounds up)
Math.round(Math.random() * 15) + 5; //from 5 - 20
Math.round(Math.random() * 10) - 5; //from -5 - 5
Math.round(Math.random() * 1000); //Gets a whole number anywhere from 0 - 1000
Math.floor(Math.random() * 10); //From 0 - 9 (cuz floor always rounds down)
Math.ceil(Math.random() * 10); //from 1 - 10 (cuz ceil always rounds up)
Math.round(Math.random() * 15) + 5; //from 5 - 20
Math.round(Math.random() * 10) - 5; //from -5 - 5
Subscribe to:
Posts (Atom)