I have a fla file and an external class called theAlarmClock.
The hands on the clock should be moving, but after Ctrl+Enter - they are idle.
package
{
import flash.display.MovieClip;
import flash.events.TimerEvent;
import flash.utils.Timer;
public class theAlarmClock extends MovieClip
{
var myDate:Date;
var mySec:int;
var myMin:int;
var myHou:int;
var myTimer:Timer = new Timer(1000);
public function theAlarmClock()
{
myTimer.addEventListener(TimerEvent.TIMER, updateClock);
myTimer.start();
function updateClock(t:TimerEvent):void
{
myDate = new Date();
mySec = myDate.seconds;
myMin = myDate.minutes;
myHou = myDate.hours;
clockHandSeconds_mc.rotation = mySec * 6;
clockHandMinutes_mc.rotation = myMin * 6;
clockHandHours_mc.rotation = myHou * 30 + myMin * 0.5;
trace("tick");
}
}
}
}
package {
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.sensors.Accelerometer;
import flash.utils.Timer;
public class ToolClass extends Sprite
{
private var myDate:Date;
private var mySec:uint;
private var myMin:uint;
private var myHou:uint;
private var myClock:Sprite;
private var myHour:Shape;
private var myMins:Shape;
private var mySeco:Shape;
private var myTimer:Timer=new Timer(1000);
public function ToolClass()
{
drawClock();
myTimer.addEventListener(TimerEvent.TIMER,updateClock);
myTimer.start();
}
private function drawClock():void
{
myClock=new Sprite();
myClock.graphics.lineStyle(0,0x000000,1);
myClock.graphics.drawCircle(0,0,100);
addChild(myClock);
myClock.x=150;
myClock.y=150;
myHour=new Shape();
myHour.graphics.lineStyle(5,0x00000,1);
myHour.graphics.lineTo(0,-50);
myClock.addChild(myHour);
myMins=new Shape();
myMins.graphics.lineStyle(2,0x000000,1);
myMins.graphics.lineTo(0,-80);
myClock.addChild(myMins);
mySeco=new Shape();
mySeco.graphics.lineStyle(1,0x000000,1);
mySeco.graphics.lineTo(0,-80);
myClock.addChild(mySeco);
}
public function getTime():void
{
myDate=new Date();
myHou=myDate.hours;
myMin=myDate.minutes;
mySec=myDate.seconds;
}
private function updateClock(e:TimerEvent):void
{
getTime();
myHour.rotation=myHou*30+30*myMin/60;
myMins.rotation=myMin*6+6*mySec/60;
mySeco.rotation=mySec*6;
trace("tick");
}
}
}
You should try the get-functions of the Date-class.
Try this code in your updateClock function instead:
myDate = new Date();
mySec = myDate.getSeconds();
myMin = myDate.getMinutes();
myHou = myDate.getHours();
clockHandSeconds_mc.rotation = mySec * 6;
clockHandMinutes_mc.rotation = myMin * 6;
clockHandHours_mc.rotation = myHou * 30 + myMin * 0.5;
trace("tick");
Related
This is my code:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.display.LoaderInfo;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.display.DisplayObject;
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.display.GradientType;
import flash.sampler.getSize;
public class Miniaturka extends MovieClip {
private var id:String;
public static var miniWidth:Number = 0;
private var tween:Tween;
private var tryb:Boolean;
private var button:Sprite;
private var index:Number;
private var aktywna:Boolean = false;
public var bLoad:Boolean = false;
public function Miniaturka(id:String,index:Number):void {
this.id = id;
this.index = index;
tryb = false;
var loader:Loader = new Loader();
loader.load(new URLRequest("images/"+id+"m.jpg"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,nLoadComplete);
this.alpha = 1;
button = new Sprite();
button.graphics.beginFill(0x000000,0);
button.graphics.drawRect(0,0,889,500);
button.graphics.endFill();
button.buttonMode = true;
addChild(button);
button.addEventListener(MouseEvent.MOUSE_OVER,onOver);
button.addEventListener(MouseEvent.MOUSE_OUT,onOut);
button.addEventListener(MouseEvent.CLICK,onClick);
}
private function nLoadComplete(event:Event):void {
var loader:Loader = new Loader();
loader = LoaderInfo(event.target).loader;
pusty.addChild(loader);
ladowanie.visible = false;
tween = new Tween(pusty,"alpha",Regular.easeOut,0,0.6,2,true);
bLoad = true;
setStan(false);
miniWidth = loader.width;
pusty.alpha = 0;
}
private function onOver(event:MouseEvent):void {
if (!aktywna) {
setStan(true);
}
}
private function onOut(event:MouseEvent):void {
if (!aktywna) {
setStan(false);
}
}
private function onClick(event:MouseEvent):void {
aktywuj();
}
public function deaktywuj():void {
setStan(false);
aktywna = false;
}
public function aktywuj():void {
MovieClip(parent).deaktywuj();
aktywna = true;
setStan(true);
MovieClip(parent.parent).loadBig(id,index);
}
private function setStan(tryb:Boolean):void {
this.tryb = tryb;
if (tryb) {
pusty.alpha = 1;
} else {
pusty.alpha = 0.6;
}
}
}
}
I want to create a gallery, and this is a code of a class which loads jpg. files with different widths, but the same height.
My problem is that I want to make the public static var miniWidth which takes the value: loader.width in function: nLoadComplete, take that value as a global var, and put it in the line: button.graphics.drawRect(0,0,889,500); so it would look like button.graphics.drawRect(0,0,miniWidth ,500);
This will create a button(rectangle) the same height and width as the loaded jpg. but i can't figure it out... How can I do that?
Wait for the image to load before drawing your shape. In the example below, I've only reprinted the affected functions.
private function Miniaturka(id:String, index:Number):void {
this.id = id;
this.index = index;
tryb = false;
var loader:Loader = new Loader();
loader.load(new URLRequest("images/" + id + "m.jpg"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, nLoadComplete);
this.alpha = 1;
}
private function nLoadComplete(event:Event):void {
var loader:Loader = new Loader();
loader = LoaderInfo(event.target).loader;
pusty.addChild(loader);
ladowanie.visible = false;
tween = new Tween(pusty, "alpha", Regular.easeOut, 0, 0.6, 2, true);
bLoad = true;
setStan(false);
miniWidth = loader.width;
pusty.alpha = 0;
createBtn();
}
private function createBtn():void {
button = new Sprite();
button.graphics.beginFill(0x000000, 0);
button.graphics.drawRect(0, 0, miniWidth, 500);
button.graphics.endFill();
button.buttonMode = true;
addChild(button);
button.addEventListener(MouseEvent.MOUSE_OVER, onOver);
button.addEventListener(MouseEvent.MOUSE_OUT, onOut);
button.addEventListener(MouseEvent.CLICK, onClick);
}
I've included a zoom functionality similar to the one explained at this website: http://www.flashandmath.com/howtos/zoom/
Even though it does indeed work in terms of the possibility of moving the image on my stage, the drag-animation is not present, meaning there will be no "movement" of my image, just a sudden change in position.
The problem followed my attempt to change the concept from timeline-based to class-based.
Here is my Main class:
package
{
import flash.display.MovieClip;
import flash.utils.Dictionary;
import flash.display.Shape;
import fl.transitions.Fly;
import fl.motion.MatrixTransformer;
import flash.events.MouseEvent;
import flash.events.KeyboardEvent;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.ui.Mouse;
public class Main extends Sprite
{
public static var scale:Number = 1;
private var _rootMC:MovieClip;
// ------------------------------
public var bg_image:Sprite;
public var spImage:Sprite;
public var mat:Matrix;
public var mcIn:MovieClip;
public var mcOut:MovieClip;
public var boardWidth:int = 980;
public var boardHeight:int = 661;
public var boardMask:Shape;
public var externalCenter:Point;
public var internalCenter:Point;
public static var scaleFactor:Number = 0.8;
public static var minScale:Number = 0.25;
public static var maxScale:Number = 10.0;
//-------------------------------
public function Main(rootMC:MovieClip)
{
_rootMC = rootMC;
bg_image = new image();
this.graphics.beginFill(0xB6DCF4);
this.graphics.drawRect(0,0,boardWidth,boardHeight);
this.graphics.endFill();
spImage = new Sprite();
this.addChild(spImage);
boardMask = new Shape();
boardMask.graphics.beginFill(0xDDDDDD);
boardMask.graphics.drawRect(0,0,boardWidth,boardHeight);
boardMask.graphics.endFill();
boardMask.x = 0;
boardMask.y = 0;
this.addChild(boardMask);
spImage.mask = boardMask;
minScale = boardWidth / bg_image.width;
mcIn = new InCursorClip();
mcOut = new OutCursorClip();
bg_image.addChild(mcIn);
bg_image.addChild(mcOut);
bg_image.scaleX = minScale;
bg_image.scaleY = minScale;
spImage.addChild(bg_image);
spImage.addChild(mcIn);
spImage.addChild(mcOut);
spImage.addEventListener(MouseEvent.MOUSE_DOWN, startDragging);
_rootMC.stage.addEventListener(MouseEvent.MOUSE_UP, stopDragging);
spImage.addEventListener(MouseEvent.CLICK, zoom);
_rootMC.stage.addEventListener(KeyboardEvent.KEY_DOWN, keyHandler);
_rootMC.stage.addEventListener(KeyboardEvent.KEY_UP, keyHandler);
}
private function startDragging(mev:MouseEvent):void
{
spImage.startDrag();
}
private function stopDragging(mev:MouseEvent):void
{
spImage.stopDrag();
}
private function zoom(mev:MouseEvent):void
{
if ((!mev.shiftKey)&&(!mev.ctrlKey))
{
return;
}
if ((mev.shiftKey)&&(mev.ctrlKey))
{
return;
}
externalCenter = new Point(spImage.mouseX,spImage.mouseY);
internalCenter = new Point(bg_image.mouseX,bg_image.mouseY);
if (mev.shiftKey)
{
bg_image.scaleX = Math.max(scaleFactor*bg_image.scaleX, minScale);
bg_image.scaleY = Math.max(scaleFactor*bg_image.scaleY, minScale);
}
if (mev.ctrlKey)
{
bg_image.scaleX = Math.min(1/scaleFactor*bg_image.scaleX, maxScale);
bg_image.scaleY = Math.min(1/scaleFactor*bg_image.scaleY, maxScale);
}
mat = this.transform.matrix.clone();
MatrixTransformer.matchInternalPointWithExternal(mat,internalCenter,externalCenter);
bg_image.transform.matrix = mat;
}
private function keyHandler(ke:KeyboardEvent):void
{
mcIn.x = spImage.mouseX;
mcIn.y = spImage.mouseY;
mcOut.x = spImage.mouseX;
mcOut.y = spImage.mouseY;
mcIn.visible = ke.ctrlKey;
mcOut.visible = ke.shiftKey;
if (ke.ctrlKey || ke.shiftKey)
{
Mouse.hide();
}
else
{
Mouse.show();
}
}
}
}
Here is my image class:
package {
import fl.motion.MatrixTransformer;
import flash.display.MovieClip;
import flash.utils.Dictionary;
import flash.display.Shape;
import fl.transitions.Fly;
import fl.motion.MatrixTransformer;
import flash.events.MouseEvent;
public class image extends MovieClip
{
public function image()
{
this.width = 980
this.height = 500
this.y = 0
this.x = 0
}
}
I know this is a lot of code, but I am really stuck :(
On your MOUSE_DOWN handler, you need to start listening to the MOUSE_MOVE event.
On your MOUSE_UP handler, you need to stop listening to the MOUSE_MOVE event.
Not sure if you are already doing this.
In your MOUSE_MOVE event handler, you need to update the x / y positions of the image, in a similar way to what you are probably doing on the MOUSE_UP handler.
My problem is when I run the application, the photos show up fine, but they pop up only in a single row. I'm trying to get at least 20 rows on the application. Also, how would I code the button function (searchNow) to take whatever tags that is entered inside of the search bar to display the right images?
{
//===================
//ini variables
//===================
import flash.display.Loader;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.events.ProgressEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.sensors.Accelerometer;
import flash.system.Security;
import flash.text.TextField;
import libs.flickrviewer_mc;
Security.allowDomain("*", "api.flickr.com");
import flash.display.Bitmap;
public class FlickrViewer extends libs.flickrviewer_mc
{
//===================
//ini variables
//===================
private var tag:String;
//===================
//ini variables
//===================
private var xpos:Number = 0;
private var ypos:Number = 0;
private var dif:Number = 150;
private var totalCols:int = 10;
private var count:int = 0;
private var i:int = 0;
private var squares_arr:Array = [];
//===================
//flickr variables
//===================
private var key:String = "Key Goes Here"; //your flickr api key
private var per_page:int = 5;
private var page:int = 1;
private var xml_url:String = "http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key="+key+"&tags="+tag+"&per_page="+per_page+"&page="+page;
//===================
//XML
//===================
private var pics:XML = new XML();
private var pics_url:URLRequest = new URLRequest(xml_url);
private var picsLoader:URLLoader = new URLLoader(pics_url);
//===================
//flickr variables
//===================
private var photo_id:String;
private var photo_owner:String;
private var photo_url:String = "http://www.flickr.com/photos/";
public function FlickrViewer()
{
super();
trace("yo");
this.picsLoader.addEventListener(Event.COMPLETE, picsLoaded);
this.back_btn.addEventListener(MouseEvent.CLICK, goBack);
this.searchFlickr_btn.addEventListener(MouseEvent.CLICK, searchNow);
//this.buttonMode = true;
}
private function searchNow(e:Event):void
{
var url:String = photo_url+"/"+photo_owner+"/"+photo_id;
var req:URLRequest = new URLRequest(url);
(req, "_blank");
}
private function loadImage(img_src:String):void
{
var loader:Loader = new Loader();
var img_url:String = img_src;
var request_url:URLRequest = new URLRequest(img_url);
loader.load(request_url);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressListener);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeListener);
}
private function progressListener(e:ProgressEvent):void
{
var bl:int = e.bytesLoaded;
var bt:int = e.bytesTotal;
var percent:int = Math.ceil((bl*100)/bt);
}
private function completeListener(e:Event):void
{
var img:Bitmap = e.currentTarget.content;
trace(img.width);
img.x=34 + (count * 90);
img.y=110;
img.width = img.height = 75;
this.addChild(img);
count++;
}
private function picsLoaded(e:Event):void
{
pics = XML(picsLoader.data);
var stat:String = pics.#stat.toString();
var totalPages:int = pics.photos.#pages;
var totalPics:int = pics.photos.#total;
trace("bob",pics);
trace("status: "+stat);
trace("Total pages: "+totalPages);
trace("Total pics: "+totalPics);
trace("-=-=-=-=-=-=-=-=-=-=-=");
var allPics:XMLList = pics.photos.*;
//loadImage(allPics[0]);
for each (var photo:XML in allPics)
{
var pic_src:String = "http://farm"+photo.#farm+".static.flickr.com/"+photo.#server+"/"+photo.#id+"_"+photo.#secret+"_m.jpg";
trace("title: "+photo.#title+" owner: "+photo.#owner);
trace("Source: "+pic_src);
trace("-=-=-=-=-=-=-=-=-=-=-=");
trace(pic_src)
var newName:String = "square_"+i;
loadImage(pic_src);
}
}
//===================
//back button event
//===================
private function goBack(e:MouseEvent):void
{
}
}
}
I wanna call the function "nextMenu" & "prevMenu" from this class from Main.as
But I get the error 1136: Incorrect number of arguments. Expected 1.
Can help me see what I've left out on the codes?
CategoryScroller.as
package com.theflashfactor.carouselStackGallery.categoryMenu
{
import com.greensock.TweenMax;
import com.greensock.easing.Quint;
import com.theflashfactor.utils.Ref;
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.geom.Rectangle;
/**
* Scroller to switch view for category item if there are more than visibleItem available
* #author Rimmon Trieu
*/
public class CategoryScroller extends Sprite
{
private var trackLength:int = 400;
private var scrubber:Sprite;
private var track:Shape;
private var categoryMenu:CategoryMenu;
private var trans:Sprite;
private var center:Number;
public function CategoryScroller(categoryMenu:CategoryMenu)
{
this.categoryMenu = categoryMenu;
buttonMode = true;
initialize();
}
/**
* Draw elemnt scrubber and track
*/
private function initialize():void
{
trans = new Sprite();
trans.graphics.beginFill(0, 0);
trans.graphics.drawRect(0, 0, trackLength, 13);
trans.graphics.endFill();
trans.addEventListener(MouseEvent.MOUSE_DOWN, transMouseDown, false, 0, true);
addChild(trans);
// Draw track
var color:uint = uint(Ref.getInstance().getRef("categoryCircleColor"));
track = new Shape();
track.graphics.lineStyle(1, color);
track.graphics.lineTo(trackLength, 0);
track.y = 6;
addChild(track);
// Draw scrubber
scrubber = new Sprite();
scrubber.graphics.beginFill(color);
scrubber.graphics.drawRect(0, 0, 80, 13);
scrubber.graphics.endFill();
center = (trackLength - scrubber.width) >> 1;
scrubber.x = center;
addChild(scrubber);
// Add dragging functionality
scrubber.addEventListener(MouseEvent.MOUSE_DOWN, scrubberMouseDown,false,0,true);
}
private function transMouseDown(event:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_UP, stageMouseUpHandler,false,0,true);
TweenMax.killTweensOf(scrubber);
categoryMenu.preTransition();
if (mouseX > width - scrubber.width) scrubber.x = (width - scrubber.width); else scrubber.x = mouseX;
}
/*private function transMouseUp(event:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_UP, stageMouseUpHandler);
checkPosition();
}*/
private function scrubberMouseDown(event:MouseEvent):void
{
event.stopImmediatePropagation();
TweenMax.killTweensOf(scrubber);
scrubber.startDrag(false, new Rectangle(0, 0, trackLength - scrubber.width, 0));
stage.addEventListener(MouseEvent.MOUSE_UP, stageMouseUpHandler,false,0,true);
categoryMenu.preTransition();
}
private function stageMouseUpHandler(event:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_UP, stageMouseUpHandler);
scrubber.stopDrag();
checkPosition();
}
private function checkPosition():void
{
var targetX:Number = (trackLength - scrubber.width) >> 1;
if (scrubber.x > (center + 20)) categoryMenu.postTransition(1);
else
if (scrubber.x < (center - 20)) categoryMenu.postTransition(-1);
else
categoryMenu.postTransition(0);
TweenMax.to(scrubber, .5, {x:targetX, ease:Quint.easeOut, overwrite:1});
}
public function nextMenu():void
{
categoryMenu.postTransition(1);
}
public function prevMenu():void
{
categoryMenu.postTransition(-1);
}
}
}
I've inserted the code below in my Main.as to call the function which I can't get it success.
import com.theflashfactor.carouselStackGallery.categoryMenu.CategoryScroller;
private var categoryScroller:CategoryScroller = new CategoryScroller();
categoryScroller.nextMenu();
Main.as
package
{
import com.theflashfactor.carouselStackGallery.CarouselStackGallery;
import com.theflashfactor.carouselStackGallery.categoryMenu.CategoryMenu;
import com.theflashfactor.carouselStackGallery.categoryMenu.CategoryScroller;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Rectangle;
import org.casalib.events.LoadEvent;
import org.casalib.load.DataLoad;
/**
* Main document class
* #author Rimmon Trieu
*/
[SWF(frameRate="60", backgroundColor="0", pageTitle="3D Carousel Stack Gallery")]
public class Main extends Sprite
{
private var xmlPath:String = "../xml/Main.xml";
private var ts3:Sprite = new Sprite;
private var categoryMenu:CategoryMenu = new CategoryMenu();
private var categoryScroller:CategoryScroller = new CategoryScroller();
public function Main()
{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
addEventListener(Event.ADDED_TO_STAGE, addToStage);
}
private function addToStage(event:Event):void
{
removeEventListener(Event.ADDED_TO_STAGE, addToStage);
var xmlLoad:DataLoad = new DataLoad(xmlPath);
xmlLoad.addEventListener(LoadEvent.COMPLETE, xmlLoaded);
xmlLoad.start();
ts3.graphics.beginFill(0x555555,1);
ts3.graphics.drawCircle(0, 0, 50);
ts3.graphics.endFill();
}
private function xmlLoaded(event:LoadEvent):void
{
event.target.removeEventListener(LoadEvent.COMPLETE, xmlLoaded);
opaqueBackground = uint(event.target.dataAsXml.settings.#backgroundColor);
var gallery:CarouselStackGallery = new CarouselStackGallery(event.target.dataAsXml);
addChild(gallery);
addChild(ts3);
ts3.addEventListener(MouseEvent.MOUSE_DOWN, ts3MouseDown,false,0,true);
}
private function ts3MouseDown(event:MouseEvent):void
{
categoryScroller.nextMenu();
}
}
}
As defined:
public function CategoryScroller(categoryMenu:CategoryMenu)
{
...
Shouldn't the class constructor be expecting an argument??
private var categoryScroller:CategoryScroller = new CategoryScroller();
I have a problem with my game.
When i played level 1 and i return to my main menu, the button new game doesn't work anymore.
Does anyone know what could be the problem?
this is what i have in my main menu as:
package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import HomeTitel;
import InstBtn;
import NieuwBtn;
public class Hoofdmenu extends MovieClip
{
private var homeTitel:HomeTitel;
private var instBtn:InstBtn;
private var nieuwBtn:NieuwBtn;
private var inst:Instructions;
private var level1:Level1;
public function Hoofdmenu():void
{
placeHomeTitel();
placeInstructionsBtn();
placeNieuwBtn();
}
private function placeHomeTitel():void
{
homeTitel = new HomeTitel();
addChild(homeTitel);
homeTitel.x = 275;
homeTitel.y = 20;
}
private function placeInstBtn():void
{
instBtn = new InstBtn();
addChild(instBtn);
instBtn.x = 275;
instBtn.y = 225;
instBtn.addEventListener(MouseEvent.CLICK, gotoInstructions);
}
private function gotoInstructions(event:MouseEvent)
{
inst = new Instructoins();
addChild(inst);
}
private function placeNewBtn():void
{
newBtn = new NewBtn();
addChild(newBtn);
newBtn.x = 275;
newBtn.y = 175;
newBtn.addEventListener(MouseEvent.CLICK, gotoLevel1);
}
private function gotoLevel1(event:MouseEvent):void
{
level1 = new Level1();
addChild(level1);
}
}
}
this is what i have in my level1 as:
package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.utils.Timer;
import flash.events.TimerEvent;
import L1Achtergrond;
import L1Titel;
import MenuBtn;
import Sun;
import Min;
import GameOver;
import WellDone;
import VolgLevel;
import HoofdmenuBtn;
import Opnieuw;
public class Level1 extends MovieClip
{
private var back:L1Achtergrond;
private var titel:L1Titel;
private var menu:MenuBtn;
private var sun:Sun;
private var aantalSun:int = 5;
private var counter:int;
private var sunArray:Array = new Array();
private var timer:Timer;
private var min:Min;
private var gameover:GameOver;
private var welldone:WellDone;
private var volglevel:VolgLevel;
private var opn:Opnieuw;
private var hoofdBtn:HoofdmenuBtn;
private var level1:Level1;
private var level2:Level2;
private var hoofdmenu:Hoofdmenu;
public function Level1():void
{
back = new L1Achtergrond();
addChild(back);
placeTitel();
timer = new Timer(3000,1);
timer.addEventListener(TimerEvent.TIMER_COMPLETE, startLevel1);
timer.start();
}
private function placeTitel():void
{
titel = new L1Titel();
addChild(titel);
titel.x = 275;
titel.y = 150;
}
private function startLevel1(event:TimerEvent):void
{
for (counter = 0; counter < aantalSun; counter++)
{
sun = new Sun();
sunArray.push(sun);
addChild(sun);
sun.addEventListener(MouseEvent.CLICK, checkSun);
}
min = new Min();
addChild(min);
min.x = 275;
min.y = 30;
min.play();
min.width = 40;
min.height = 20;
timer = new Timer(20000,1);
timer.addEventListener(TimerEvent.TIMER_COMPLETE, gameOver);
timer.start();
menu = new MenuBtn();
addChild(menu);
menu.x = 510;
menu.y = 380;
menu.addEventListener(MouseEvent.CLICK, gotoHoofdmenu);
}
private function checkSun(event:MouseEvent):void
{
aantalSun--;
if (aantalSun == 0)
{
wellDone();
timer.stop();
}
}
public function wellDone():void
{
removeChild(menu);
removeChild(min);
welldone = new WellDone();
addChild(welldone);
welldone.x = 275;
welldone.y = 150;
volglevel = new VolgLevel();
addChild(volglevel);
volglevel.x = 300;
volglevel.y = 250;
volglevel.addEventListener(MouseEvent.CLICK, gotoLevel2);
hoofdBtn = new HoofdmenuBtn();
addChild(hoofdBtn);
hoofdBtn.x = 95;
hoofdBtn.y = 250;
hoofdBtn.addEventListener(MouseEvent.CLICK, gotoHoofdmenuW);
}
private function gameOver(event:TimerEvent):void
{
//timer.stop();
removeChild(min);
removeChild(menu);
for (counter = 0; counter < sunArray.length; counter++)
{
removeChild(sunArray[counter]);
}
gameover = new GameOver();
addChild(gameover);
gameover.x = 275;
gameover.y = 150;
opn = new Opnieuw();
addChild(opn);
opn.x = 300;
opn.y = 250;
opn.addEventListener(MouseEvent.CLICK, level1Opn);
hoofdBtn = new HoofdmenuBtn();
addChild(hoofdBtn);
hoofdBtn.x = 95;
hoofdBtn.y = 250;
hoofdBtn.addEventListener(MouseEvent.CLICK, gotoHoofdmenuG);
}
private function level1Opn(event:MouseEvent):void
{
removeChild(gameover);
removeChild(opn);
removeChild(hoofdBtn);
removeChild(back);
level1 = new Level1();
addChild(level1);
}
private function gotoHoofdmenu(event:MouseEvent):void
{
timer.stop();
removeChild(min);
removeChild(menu);
removeChild(back);
for (counter = 0; counter < sunArray.length; counter++)
{
removeChild(sunArray[counter]);
}
}
private function gotoHoofdmenuW(event:MouseEvent):void
{
removeChild(back);
removeChild(welldone);
removeChild(hoofdBtn);
removeChild(volglevel);
}
private function gotoHoofdmenuG(event:MouseEvent):void
{
removeChild(back);
removeChild(gameover);
removeChild(hoofdBtn);
removeChild(opn);
}
private function gotoLevel2(event:MouseEvent):void
{
removeChild(back);
removeChild(volglevel);
removeChild(hoofdBtn);
removeChild(welldone);
level2 = new Level2();
addChild(level2);
}
}
}
I think you should rebuild/redesign the structure of your game.
Now, your code does few strange things:
in your Main class: everytime you call function gotoLevel1 you create a new instance of Level1
in your Level1 class in the function level1Opn you create another instance of 'Level1' and you add it inside Level1 - quite a mess.
This isn't just small code tweak - you should rebuild it quite significantly.
Seems like you never remove level1 from your menu. Even though you remove all children from Level 1, the movieclip will still exist and be on top of your menu.
I would recommend reading though this tutorial, as it will teach you some basic skills about structuring your code, and specific game development features (sound, preloading, saving things in cookies): http://gamedev.michaeljameswilliams.com/2008/09/17/avoider-game-tutorial-1/