I have checked and rechecked, and I do not know why these “buckets” aren’t being killed when I run the reset menu function, a fresh set of eyes could really help.
package com.Views {
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.geom.Point;
import flash.text.Font;
import flash.utils.Timer;
import gs.*;
import gs.easing.*;
import gs.events.*;
import gs.plugins.*;
import gs.utils.*;
import org.simplemvc.core.Model;
import org.simplemvc.core.View;
import org.simplemvc.interfaces.IController;
public class BucketMenu extends View {
private var _gill:Font;
private var _loader:BulkLoader;
private var _spacing:int = 0;
private var _timeLine:TimelineMax;
private var spacer:MovieClip;
private var bc:BucketController;
private var _leftPoint:Point;
private var _count:int = 0;
private var _state:String = null;
public var _startPoints:Array;
public var _buckets:Array;
public var _liveBucket:Bucket = null;
//public static const ANIMATION_DONE:String = "animDone";
public function BucketMenu(model:Model, controller:IController=null) {
super(model, controller);
_gill = new Gill();
TweenPlugin.activate([TransformAroundCenterPlugin, MotionBlurPlugin]);
addEventListener(Event.ADDED_TO_STAGE, added, false, 0, true);
bc = new BucketController( model, this);
_buckets = new Array();
_startPoints = new Array();
_leftPoint = new Point(-100,0);
}
private function added(e:Event):void {
trace("buckets added to stage");
trace("event Names = "+EventNames.SECTION_4);
spacer = new MovieClip();
spacer.graphics.beginFill(0x666666, 0);
spacer.graphics.drawRect( 0, 0, 800, 700);
spacer.graphics.endFill();
spacer.y = -20;
addChild(spacer);
var fs:LayoutUtil = new LayoutUtil();
fs.yOffset = 30;
fs.addResizeTarget(spacer);
var _we:RText = new RText(_gill, "left", 0, true, "we are SISU...", 0, 0, "center", 28, 0xFAA634, true, false, false);
_we.alpha = 0;
_we.y = stage.stageHeight>>1;
_we.x = stage.stageWidth>>1;
addChild(_we);
var fs2:LayoutUtil = new LayoutUtil();
fs2.yOffset = 100;
//fs2.doesBlur = true;
fs2.addResizeTarget(_we, "TC");
//TweenMax.to(_we, 2, {alpha:1, startAt:{blurFilter:{blurX:10, blurY:10}},blurFilter:{blurX:0, blurY:0, delay:.6}});
TweenMax.to(_we, 1.4, {startAt:{transformAroundCenter:{scaleX:0, scaleY:0}, alpha:0}, alpha:1, x:(stage.stageWidth>>1)-(_we.width>>1), y:100, transformAroundCenter:{scaleX:1, scaleY:1}, ease:Bounce.easeOut, delay:2});
startLoad();
}
private function startLoad():void{
if(BulkLoader.getLoader("Menu") == null){
_loader = new BulkLoader("Menu");
_loader.logLevel = BulkLoader.LOG_INFO;
_loader.add("MenuImages2/red.png", {id:"0"});
_loader.add("MenuImages2/orange.png", {id:"1"});
_loader.add("MenuImages2/yellow.png", {id:"2"});
_loader.add("MenuImages2/green.png", {id:"3"});
_loader.add("MenuImages2/blue.png", {id:"4"});
_loader.add("MenuImages2/violet.png", {id:"5"});
_loader.addEventListener(BulkLoader.COMPLETE, itemsLoaded);
_loader.start();
}else{
_loader = BulkLoader.getLoader("Menu");
itemsLoaded(null);
}
}
private function itemsLoaded(e:Event = null):void{
for (var i:int = 0; i<6; i++){
var _buk:Bucket = new Bucket(model, _loader.getBitmap(String(i)), this.spacer, _text*, i, null);
_buckets.push(_buk);
_buk.name = _names*;
_buk.y = spacer.height >>1;;
_buk.x = _spacing;
_startPoints.push(_spacing);
_spacing += _buk.width-10;
spacer.addChild(_buk);
spacer.setChildIndex(_buk, 0);
_buk.x = 360;
_buk.scaleX = _buk.scaleY = 0;
if(i>4){
trace("end of itemsloaded");
//_buckets.reverse();
_leftPoint.y = (spacer.height>>1)-125;
movingOn();
}
}
}
private function movingOn():void {
trace("from moving on = "+_state);
if(_state == null || _state == "home"){
bucketIntro();
}else{
moveTo();
}
}
private function bucketIntro():void{
_timeLine = new TimelineMax();
var yNum:int = (spacer.height >>1)-120;
//_timeLine.useFrames = true;
_timeLine.insertMultiple( [ new TweenMax(_buckets[0], 2.5, {bezierThrough:[{x:360, y:110}, {x:_startPoints[0], y:yNum}], scaleX:1, scaleY:1, motionBlur:{strength:0.6, quality:2}, ease:Expo.easeOut}),
new TweenMax(_buckets[1], 2.5, {bezierThrough:[{x:360, y:110}, {x:_startPoints[1], y:yNum}], scaleX:1, scaleY:1, motionBlur:{strength:0.6, quality:2}, ease:Expo.easeOut}),
new TweenMax(_buckets[2], 2.5, {bezierThrough:[{x:360, y:110}, {x:_startPoints[2], y:yNum}], scaleX:1, scaleY:1, motionBlur:{strength:0.6, quality:2}, ease:Expo.easeOut}),
new TweenMax(_buckets[3], 2.5, {bezierThrough:[{x:360, y:110}, {x:_startPoints[3], y:yNum}], scaleX:1, scaleY:1, motionBlur:{strength:0.6, quality:2}, ease:Expo.easeOut}),
new TweenMax(_buckets[4], 2.5, {bezierThrough:[{x:360, y:110}, {x:_startPoints[4], y:yNum}], scaleX:1, scaleY:1, motionBlur:{strength:0.6, quality:2}, ease:Expo.easeOut}),
new TweenMax(_buckets[5], 2.5, {bezierThrough:[{x:360, y:110}, {x:_startPoints[5], y:yNum}], scaleX:1, scaleY:1, motionBlur:{strength:0.6, quality:2}, ease:Expo.easeOut})],0, TweenAlign.START, .3);
_timeLine.addEventListener(TweenEvent.COMPLETE, intro2, false, 0, true);
}
private function intro2(e:TweenEvent):void {
var dela:Number = 0;
for (var g:int = 0; g<_buckets.length; g++) {
var _tl:TimelineMax = new TimelineMax();
_tl.insertMultiple( [ new TweenMax(_buckets[g], .3, {y:((spacer.height >> 1)-120)+15, colorMatrixFilter:{saturation:1}, ease:Sine.easeInOut}),
new TweenMax(_buckets[g]._text, .8, {alpha:1, y:-50, ease:Quad.easeOut})], dela, TweenAlign.START, 0.1 );
dela +=.5;
_tl.addEventListener(TweenEvent.COMPLETE, reverseIt, false, 0, true);
}
}
private function reverseIt(e:TweenEvent):void {
var tween:TimelineMax = TimelineMax(e.currentTarget);
tween.reverse(true);
_count++;
if(_count == 6) {
for (var f:int = 0; f<_buckets.length; f++) {
//dispatchEvent( new Event(BucketMenu.ANIMATION_DONE, false, false));
_buckets[f].begin();
}
}
}
private function check(e:Event):void{
_state = e.target['currentEvent'];
switch(e.target['currentEvent']) {
case "home":
if(_buckets.length >0) {
resetMenu();
}else {
}
break;
default:
moveTo();
}
}
private function moveTo():void {
var dl:int = 0;
var _depth:int = 8;
for( var l:int = 0; l < _buckets.length; l++ ) {
if(_buckets[l].name == _state) {
trace("bucket name = "+_buckets[l].name);
_buckets[l].activate();
var ran3:TweenMax = new TweenMax(_buckets[l], 1, {x:_leftPoint.x, y:_leftPoint.y, alpha:1, scaleX:1, scaleY:1, ease:Sine.easeInOut, delay:dl});
_liveBucket = _buckets[l];
dl+=0;
}else if (_buckets[l].name != _state) {
trace("bucket name is not current event"+_buckets[l].name);
_buckets[l].deactivate();
var ran2:TweenMax = new TweenMax(_buckets[l], 1, {x:_leftPoint.x, y:(_leftPoint.y-_depth), scaleX:1, scaleY:1, alpha:0, ease:Sine.easeInOut, delay:dl});
//_depth +=8;
dl+=0;
}
}
}
private function resetMenu():void{
TweenMax.killAllTweens(true);
_timeLine = null;
_buckets = [];
_count = 0;
_startPoints = [];
_spacing = 0;
_count = 0;
trace("how many kids does bucket menu have = "+this.spacer.numChildren);
var children:Array = new Array();
trace ('before : '+spacer.numChildren);
while(spacer.numChildren)
{
spacer.removeChildAt(0);
}
var i:int = spacer.numChildren;
while( i -- )
{
spacer.removeChildAt( i );
}
trace ('after : '+spacer.numChildren);
trace ('after : '+spacer.numChildren);
trace ('-------------------------');
var _timer:Timer = new Timer(1000, 1);
_timer.addEventListener(TimerEvent.TIMER_COMPLETE, reload, false, 0, true);
_timer.start();
}
private function reload(e:TimerEvent):void {
itemsLoaded();
}
override public function registerEvents():void {
model.addEventListener( Model.ALL_EVENTS, check );
}
}
}
i’m sure there are a lot of problems, but the only one I care about is destroying those buckets… also… inside the buckets, I have a listener for “removed from stage”, and that kills all the listeners, etc, inside the buckets… help anyone… i know it’s asking a lot