проблемный код
Код AS3:
package
{
import com.greensock.TweenLite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.net.URLRequest;
import flash.text.TextField;
import flash.utils.Timer;
import flash.display.MovieClip;
public class Class_00_rabbitsAS3 extends MovieClip
{
private var timer:TextField;
private var scoreText:TextField;
private var timerCurrent:Number;
private var timerCurrentInterval:Timer;
private var btnCloseRelease:Boolean;
private var rabbits:Array;
private var frames:Array;
private var menuFrames:Array;
private var menu:Array;
public function Class_00_rabbitsAS3()
{
frames = [this['score'], this['time'], this['btnClose'], this['endFrame']];
menuFrames = [this['frameRulese'], this['subscribeFrame'], this['izineFrame']];
timer = this['time']['text'];
scoreText = this['score']['text'];
timerCurrent = 0;
btnCloseRelease = false;
rabbits = [];
menu = [];
createScene();
}
private function createScene()
{
for (var j:Number = 0; j < 9; j++)
{
var hole:MovieClip = this['rabbit_' + j];
var rabbit:MovieClip = hole['rabbit'];
rabbit.yUp = rabbit.y;
rabbit.y += rabbit.height;
rabbit.yDown = rabbit.y;
rabbit.id = j;
if (j == 4)
rabbit.y = rabbit.yUp;
rabbit.explocion = hole['explocion'];
rabbit.explocion.scaleX = rabbit.explocion.scaleY = 0;
rabbit.addEventListener(MouseEvent.CLICK, rabbitRelease);
rabbits[j] = rabbit;
}
for (var i:Number = 0; i < frames.length; i++)
{
var frame:MovieClip = frames[i];
frame.scaleX = frame.scaleY = 0;
if (i < 3)
{
var btn:MovieClip = this['menu_' + i];
btn.Y = btn.y;
btn.id = i;
btn.addEventListener(MouseEvent.CLICK, openMenuFrame);
menu[i] = btn;
var menuFrame:MovieClip = menuFrames[i];
menuFrame.scaleX = menuFrame.scaleY = 0;
if (i > 0)
{
menuFrame['btn'].addEventListener(MouseEvent.CLICK, gotoIzineLink);
}
}
}
this['btnStart'].addEventListener(MouseEvent.CLICK, startGame);
}
private function gotoIzineLink(event:MouseEvent)
{
var eventClip:Object = event.currentTarget;
var url:String;
switch(eventClip.parent)
{
case menuFrames[1]:
url = 'http://izine.ru/subscribe/';
break;
case menuFrames[2]:
url = 'http://www.izine.ru';
}
}
private function openMenuFrame(event:MouseEvent)
{
for (var i:int = 0; i < menuFrames.length; i++)
{
var btn:MovieClip = this['menu_' + i];
TweenLite.to(btn, 0.3, {alpha : 0, y : menu[0].y, onCompleteParams : [btn], onComplete : function(_btn:MovieClip)
{
_btn.visible = false;
}});
}
TweenLite.to(this['btnStart'], 0.3, { scaleX : 0, scaleY : 0 } );
var id:Number = event.currentTarget.id;
var frame:MovieClip = menuFrames[id];
var btnClose:MovieClip = frame['btnClose'];
btnClose.id = id;
TweenLite.to(frame, 0.3, { scaleX : 1, scaleY : 1, delay : 0.3} );
btnClose.addEventListener(MouseEvent.CLICK, closeMenuFrame);
}
private function closeMenuFrame(event:MouseEvent)
{
for (var i:int = 0; i < menuFrames.length; i++)
{
var btn:MovieClip = this['menu_' + i];
btn.visible = true;
TweenLite.to(btn, 0.3, { alpha : 1, y : btn.Y, delay : 0.3});
}
TweenLite.to(this['btnStart'], 0.3, { scaleX : 1, scaleY : 1, delay : 0.3} );
var id:Number = event.currentTarget.id;
var frame:MovieClip = menuFrames[id];
var btnClose:MovieClip = frame['btnClose'];
TweenLite.to(frame, 0.3, { scaleX : 0, scaleY : 0} );
btnClose.removeEventListener(MouseEvent.CLICK, closeMenuFrame);
}
//navigate
private function rabbitRelease(event:MouseEvent)
{
var rabbit:* = event.currentTarget;
var hole:MovieClip = this['rabbit_' + rabbit.id];
var explocion:MovieClip = rabbit.explocion;
TweenLite.to(explocion, 0.3, {scaleX : 1, scaleY : 1} );
var current:Number = Number(scoreText.text);
current++;
scoreText.text = String(current);
TweenLite.to(rabbit, 0.3, { alpha : 0, onComplete : function()
{
rabbit.explocion.scaleX = rabbit.explocion.scaleY = 0;
rabbit.y = rabbit.yDown;
rabbit.alpha = 1;
rabbit.action = false;
}});
explocion.addEventListener(Event.ENTER_FRAME, function(event:Event)
{
var explocion:* = event.currentTarget;
if (explocion.currentFrame == explocion.totalFrames)
explocion.gotoAndStop(1);
});
}
private function rabbitAction(event:TimerEvent)
{
if (event != null)
event.target.stop();
if (btnCloseRelease)
return;
for (var i:Number = 0, q:Number = 0; i < rabbits.length; i++)
if (rabbits[i].action)
q++;
if (q > 3)
{
var t_0:Timer = new Timer(500, 0);
t_0.addEventListener(TimerEvent.TIMER, rabbitAction);
t_0.start();
return;
}
var idRabbit:Number = Math.round(Math.random() * 8);
var rabbit:MovieClip = rabbits[idRabbit];
if (rabbit.action)
{
rabbitAction(null);
return;
}
else
rabbit.action = true;
var delayTime:Number = Math.round(Math.random() * 1000);
var actionTime:Number = Math.round(Math.random() * 20) / 10;
var Y:Number = rabbit.yDown / 2 - Math.round(Math.random() * rabbit.yDown / 2);
var t_1:Timer = new Timer(delayTime, 0);
t_1.addEventListener(TimerEvent.TIMER, rabbitAction);
t_1.start();
TweenLite.to(rabbit, actionTime, { y : Y, onComplete : rabbitLive } );
function rabbitLive()
{
TweenLite.to(rabbit, actionTime / 2, { y : rabbit.yDown, onComplete : function()
{
rabbit.action = false;
}});
}
}
private function startGame(event:MouseEvent)
{
TweenLite.to(this['head'], 0.3, {alpha : 0});
TweenLite.to(rabbits[4], 0.5, {y : rabbits[4].yDown});
TweenLite.to(this['btnStart'], 0.3, { scaleX : 0, scaleY : 0 } );
for (var i:Number = 0; i < 3; i++)
{
var frame:MovieClip = frames[i];
TweenLite.to(frame, 0.3, { scaleX : 1, scaleY : 1, delay : 0.3 } );
var btn:MovieClip = menu[i];
TweenLite.to(btn, 0.3, {alpha : 0, y : menu[0].y, delay : (0.1 * (2 - i)), onCompleteParams : [btn], onComplete : function(_btn:MovieClip)
{
_btn.visible = false;
}});
}
for (var j:Number = 0; j < 9; j++)
{
var rabbit:MovieClip = rabbits[j];
rabbit.addEventListener(MouseEvent.CLICK, rabbitRelease);
}
var t_0:Timer = new Timer(600, 0 );
t_0.addEventListener(TimerEvent.TIMER, function()
{
addEventListener(Event.ENTER_FRAME, onTimer);
if(timerCurrentInterval == null)
timerCurrentInterval = new Timer(100, 10000);
timerCurrentInterval.addEventListener(TimerEvent.TIMER, currentTimerChange);
timerCurrentInterval.start();
t_0.stop();
});
t_0.start();
this['btnClose'].addEventListener(MouseEvent.CLICK, endGame);
btnCloseRelease = false;
rabbitAction(null);
}
private function overGame()
{
TweenLite.to(this['endFrame'], 0.3, { scaleX : 1, scaleY : 1 } );
for (var i:String in rabbits)
rabbits[i].removeEventListener(MouseEvent.CLICK, rabbitRelease);
var text:TextField = this['endFrame'].text;
text.text = scoreText.text;
for (var j:Number = 0; j < 3; j++)
{
var frame:MovieClip = frames[j];
TweenLite.to(frame, 0.3, {scaleX : 0, scaleY : 0});
}
var close:MovieClip = this['endFrame']['btnClose'];
close.addEventListener(MouseEvent.CLICK, endGame);
}
private function endGame(event:MouseEvent)
{
btnCloseRelease = true;
timerCurrent = 0;
timer.text = '0:00:00';
scoreText.text = '0';
timerCurrentInterval.stop();
removeEventListener(Event.ENTER_FRAME, onTimer);
TweenLite.to(this['head'], 0.3, {alpha : 1} );
for (var a:int = 0; a < menu.length; a++)
{
var btn:MovieClip = menu[a];
btn.visible = true;
TweenLite.to(btn, 0.3, {alpha : 1, y : btn.Y, delay : 0.3});
}
for (var i:String in frames)
{
var frame:MovieClip = frames[i];
TweenLite.to(frame, 0.3, {scaleX : 0, scaleY : 0});
}
TweenLite.to(this['btnStart'], 0.3, { scaleX : 1, scaleY : 1, delay : 0.3 } );
for (var j:String in rabbits)
{
if (j != '4')
TweenLite.to(rabbits[j], 0.5, { y : rabbits[j].yDown } );
else
TweenLite.to(rabbits[j], 0.5, { y : rabbits[j].yUp } );
rabbits[j].action = false;
rabbits[j].removeEventListener(MouseEvent.CLICK, rabbitRelease);
}
}
private function onTimer(event:Event)
{
var min:Number = Math.floor(timerCurrent / 60);
var sec:Number = Math.floor(timerCurrent - min * 60);
var dec:String;
var secText:String;
if (sec == 0)
dec = String(timerCurrent);
else
dec = String(Math.floor(timerCurrent % sec * 10) / 10);
if (sec < 10)
secText = '0' + sec;
else
secText = String(sec);
if(min == 0)
timer.text = min + ':' + secText + ':' + dec;
else
{
timer.text = '1:00:00';
removeEventListener(Event.ENTER_FRAME, onTimer);
timerCurrentInterval.stop();
overGame();
}
}
private function currentTimerChange(event:TimerEvent)
{
timerCurrent += 0.1;
}
}
}
|