GBee, можно много чего сделать твинером, кто же спорит. В данном случае Ваш ответ только путает человека, решающего совершенно другую задачу и пока не думающего о "красоте".
S-ed, я только не понял нагромождение со стрингами, которые потом переводятся через условия в 1 и 2. Не надо всегда равняться на примеры из хелпа – они для разъяснения каких-то конкретных моментов часто в ущерб остальному. Можно было совершенно не напрягаясь передавать прямо величину скейла - 1 или 2 вместо "in" и "out", думаю никто бы не запутался
. А в остальном код выглядит приятно, так держать.
Добавлено через 1 час 11 минут
Код AS3:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;
/* * * * * * * * * *
* *
* @author wolsh *
* *
\* * * * * * * * * */
public class Main extends Sprite
{
private var _obj:Sprite;
private var _timer:Timer;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
//stage.showDefaultContextMenu = false;
// entry point
_obj = new Sprite();
_obj.graphics.beginFill(0xFFAA00);
_obj.graphics.drawRoundRect(0, 0, 200, 150, 12);
addChild(_obj);
_obj.x = 300, _obj.y = 200;
_obj.addEventListener(MouseEvent.ROLL_OVER, onOver);
_obj.addEventListener(MouseEvent.ROLL_OUT, onOut);
_timer = new Timer(7000);
_timer.addEventListener(TimerEvent.TIMER, onTimer);
_timer.start();
}
private function onOut(event:MouseEvent):void
{
if(_obj.scaleX == 2) scaleObj(1);
_timer.delay = 7000;
_timer.start();
}
private function onOver(event:MouseEvent):void
{
if(_obj.scaleX == 1) scaleObj(2);
_timer.stop();
}
private function onTimer(event:TimerEvent):void
{
var timer:Timer = event.target as Timer;
if (timer.delay == 3000)
{
scaleObj(1);
timer.delay = 7000;
}
else
{
scaleObj(2);
timer.delay = 3000;
}
}
private function scaleObj(scale:Number):void
{
_obj.x = scale == 2 ? _obj.x - _obj.width / 2 : _obj.x + _obj.width / 4;
_obj.y = scale == 2 ? _obj.y - _obj.height / 2 : _obj.y + _obj.height / 4;
_obj.scaleX = _obj.scaleY = scale;
}
}
}