набросал по-бустрому. Примерно так.

Код AS3:
package
{
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.utils.Timer;
public class CornerTimer extends Sprite {
private var _timer: Timer;
private var _corners: Array = [];
private var _cornerOffset: int = 50;
public function CornerTimer() {
_timer = new Timer(250);
_timer.addEventListener(TimerEvent.TIMER, onTimer);
_timer.start();
var c1:Corner = new Corner();
c1.x = 100;
c1.y = 100;
addChild(c1);
var c2:Corner = new Corner();
c2.x = 100 + _cornerOffset;
c2.y = 100;
addChild(c2);
var c3:Corner = new Corner();
c3.x = 100 + _cornerOffset;
c3.y = 100 + _cornerOffset;
addChild(c3);
var c4:Corner = new Corner();
c4.x = 100;
c4.y = 100 + _cornerOffset;
addChild(c4);
_corners.push(c1, c2, c3, c4);
}
private function onTimer(e:TimerEvent):void {
var highlightIndex:int = _timer.currentCount % 4;
var allHighlighted:Boolean = true;
for each (var corner:Corner in _corners) {
if (corner.highlighted == false) {
allHighlighted = false;
break;
}
}
if (allHighlighted) {
for each (corner in _corners) {
corner.highlighted = false;
}
_timer.reset();
_timer.start();
return;
}
_corners[highlightIndex].highlighted = true;
}
}
}
import flash.display.Sprite;
internal class Corner extends Sprite {
private var _highlighted:Boolean = false;
public function Corner() {
drawBlack();
}
private function drawRed():void {
graphics.clear();
graphics.beginFill(0xFF0000);
graphics.drawCircle(0, 0, 10);
graphics.endFill();
}
private function drawBlack():void {
graphics.clear();
graphics.beginFill(0x000000);
graphics.drawCircle(0, 0, 10);
graphics.endFill();
}
public function set highlighted(value:Boolean):void {
_highlighted = value;
if (value) {
drawRed();
} else {
drawBlack();
}
}
public function get highlighted():Boolean {
return _highlighted;
}
}