topical media & game development
student-game-wakuwaku-com-waku-components-Hud.ax
student-game-wakuwaku-com-waku-components-Hud.ax
(swf
)
[ flash
]
flex
package //com.waku.components
{
import flash.events.MouseEvent;
import mx.collections.ArrayCollection;
import mx.collections.Sort;
import mx.collections.SortField;
import mx.containers.Canvas;
import mx.containers.Grid;
import mx.containers.GridItem;
import mx.containers.GridRow;
import mx.containers.HBox;
import mx.containers.Panel;
import mx.containers.TitleWindow;
import mx.containers.VBox;
import mx.controls.Image;
import mx.controls.Label;
import mx.controls.Text;
import mx.controls.VRule;
public class @ax-student-game-wakuwaku-com-waku-components-Hud extends TitleWindow
{
private var grid : Grid;
private var animalId: int;
public var game : student_game_wakuwaku_com_waku_components_MiniGame;
private var canvas : Canvas = new Canvas();
private var statusLabel : Label = new Label();
private var itemsPanel : Panel;
private var globalPanel : VBox;
private var itemsArray : Array = new Array();
private var hBox : HBox = new HBox();
private var vBox : VBox = new VBox();
private var visualTransformation : student_game_wakuwaku_com_waku_components_VisualTransformation;
public function @ax-student-game-wakuwaku-com-waku-components-Hud(animId : int, animalName: String, animalSize : int, parentGame : student_game_wakuwaku_com_waku_components_MiniGame):void
{
game = parentGame;
animalId = animId;
var nColumns : int = 3;
var gridRow : GridRow;
var gridItem : GridItem;
itemsPanel = new Panel();
var label : Label;
var vRule : VRule;
globalPanel = new VBox();
visualTransformation = new student_game_wakuwaku_com_waku_components_VisualTransformation(this);
this.title = animalName + " game";
this.showCloseButton=true;
//button.addEventListener(MouseEvent.CLICK, game.closeButtonHandler);
this.styleName="SelectPanel";
itemsPanel.styleName="@filePanel";
this.addChild(hBox);
hBox.addChild(globalPanel);
grid = new Grid();
itemsPanel.addChild(grid);
globalPanel.addChild(itemsPanel);
vRule = new VRule();
vRule.height=10;
globalPanel.addChild(vRule);
hBox.addChild(vBox);
vBox.addChild(canvas);
addImageCanvas("student-game-wakuwaku-com-waku-animals-0"+ animalId.toString() + "-animal.gif",0);
generateRandomPanel(animalSize);
//create Panel
for (var x : int =0; x < animalSize; x++)
{
gridRow = new GridRow();
grid.addChild(gridRow);
for (var y : int = 0; y < nColumns; y++)
{
gridItem = new GridItem();
gridItem.addChild(itemsArray.shift());
gridRow.addChild(gridItem);
}
}
}
public function addImageCanvas (source : String, position : int):void
{
var animalImage : Image = new Image();
animalImage.source = source;
canvas.addChild(animalImage);
var temp : ArrayCollection = new ArrayCollection(canvas.getChildren());
var sort:Sort = new Sort();
sort.fields = [ new SortField("source")];
temp.sort=sort;
temp.refresh();
canvas.removeAllChildren();
for each (var child:* in temp){
canvas.addChild(child);
}
}
private function randRange(min:Number, max:Number):Number {
var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
return randomNum;
}
private function disableGridButtons ():void{
for (var i:int=0; i<grid.numChildren; i++)
{
var gridRow : GridRow = grid.getChildAt(i) as GridRow;
for (var j:int=0;j<gridRow.numChildren;j++)
{
var gridItem : GridItem = gridRow.getChildAt(j) as GridItem;
var imageButton : student_game_wakuwaku_com_waku_components_ImageButton = gridItem.getChildAt(0) as student_game_wakuwaku_com_waku_components_ImageButton;
imageButton.disableAnimation();
imageButton.removeEventListener(MouseEvent.CLICK,game.clickEventHandler);
}
}
}
public function gameOver():void {
var image : Image = new Image();
var text : Text = new Text();
image.source = ("com/waku/images/welldone.png");
text.text="Well done\nYou have completed the "+ this.parentApplication.game.animalNames[animalId];
visualTransformation.yellowGlowPlay(canvas);
vBox.addChild(image);
disableGridButtons();
visualTransformation.fadeSome(grid,0.2);
}
private function generateRandomPanel(animalCount : int) : void {
var itemsPerAnimal : int = 3;
var imageButton : student_game_wakuwaku_com_waku_components_ImageButton;
var tempArray : Array = new Array();
var rand : int;
var swap : Object;
for (var x : int =0; x < animalCount; x++)
{
for (var y : int = 0; y < itemsPerAnimal; y++)
{
imageButton = new student_game_wakuwaku_com_waku_components_ImageButton();
imageButton.animalId=x;
imageButton.itemId=y;
imageButton.addSource("student-game-wakuwaku-com-waku-animals-0"+ x + "-thitem" + y + ".gif");
imageButton.addEventListener(MouseEvent.CLICK,game.clickEventHandler);
//imageButton.width=64;
//imageButton.height=64;
itemsArray.push(imageButton);
}
}
rand = randRange(0, animalCount*itemsPerAnimal -1);
for (x = 0; x < animalCount * itemsPerAnimal; x++)
{
while (tempArray[rand] != null)
{
rand = randRange(0, animalCount*itemsPerAnimal -1);
}
tempArray[rand]=itemsArray.shift();
}
itemsArray = tempArray;
}
}
}
(C) Æliens
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.