Flash CS4 Professional ActionScript 3.0 (Flash implementation)
package {
import flash.display.*;
import flash.events.*;
public class Test extends Sprite {
private const EYE_LEFT_CENTER_X:int = 150;
private const EYE_LEFT_CENTER_Y:int = 200;
private const EYE_RIGHT_CENTER_X:int = 310;
private const EYE_RIGHT_CENTER_Y:int = 200;
private const EYE_WIDTH:int = 140;
private const EYE_HEIGHT:int = 240;
private const EYE_BORDER_WIDTH:int = 20;
private var eyeLeft:Sprite;
private var eyeRight:Sprite;
public function Test():void {
graphics.clear();
graphics.beginFill(0x000000);
graphics.drawEllipse(EYE_LEFT_CENTER_X - EYE_WIDTH / 2, EYE_LEFT_CENTER_Y - EYE_HEIGHT / 2, EYE_WIDTH, EYE_HEIGHT);
graphics.drawEllipse(EYE_RIGHT_CENTER_X - EYE_WIDTH / 2, EYE_RIGHT_CENTER_Y - EYE_HEIGHT / 2, EYE_WIDTH, EYE_HEIGHT);
graphics.endFill();
graphics.beginFill(0xffffff);
graphics.drawEllipse((EYE_LEFT_CENTER_X - EYE_WIDTH / 2) + EYE_BORDER_WIDTH, (EYE_LEFT_CENTER_Y - EYE_HEIGHT / 2) + EYE_BORDER_WIDTH, EYE_WIDTH - EYE_BORDER_WIDTH * 2, EYE_HEIGHT - EYE_BORDER_WIDTH * 2);
graphics.drawEllipse((EYE_RIGHT_CENTER_X - EYE_WIDTH / 2) + EYE_BORDER_WIDTH, (EYE_RIGHT_CENTER_Y - EYE_HEIGHT / 2) + EYE_BORDER_WIDTH, EYE_WIDTH - EYE_BORDER_WIDTH * 2, EYE_HEIGHT - EYE_BORDER_WIDTH * 2);
graphics.endFill();
eyeLeft = new Eye();
eyeLeft.x = EYE_LEFT_CENTER_X;
eyeLeft.y = EYE_LEFT_CENTER_Y;
addChild(eyeLeft);
eyeRight = new Eye();
eyeRight.x = EYE_RIGHT_CENTER_X;
eyeRight.y = EYE_RIGHT_CENTER_Y;
addChild(eyeRight);
stage.addEventListener(MouseEvent.MOUSE_MOVE,
function (event:MouseEvent):void {
var distance:int;
var maxDistance:int = EYE_WIDTH / 2 - EYE_BORDER_WIDTH - Eye.RADIUS;
distance = Math.sqrt(Math.pow((event.stageX - EYE_LEFT_CENTER_X), 2) + Math.pow((event.stageY - EYE_LEFT_CENTER_Y), 2));
if (distance > maxDistance) {
eyeLeft.x = EYE_LEFT_CENTER_X + (event.stageX - EYE_LEFT_CENTER_X) / distance * maxDistance;
eyeLeft.y = EYE_LEFT_CENTER_Y + (event.stageY - EYE_LEFT_CENTER_Y) / distance * maxDistance;
}
else {
eyeLeft.x = event.stageX;
eyeLeft.y = event.stageY;
}
distance = Math.sqrt(Math.pow((event.stageX - EYE_RIGHT_CENTER_X), 2) + Math.pow((event.stageY - EYE_RIGHT_CENTER_Y), 2));
if (distance > maxDistance) {
eyeRight.x = EYE_RIGHT_CENTER_X + (event.stageX - EYE_RIGHT_CENTER_X) / distance * maxDistance;
eyeRight.y = EYE_RIGHT_CENTER_Y + (event.stageY - EYE_RIGHT_CENTER_Y) / distance * maxDistance;
}
else {
eyeRight.x = event.stageX;
eyeRight.y = event.stageY;
}
}
);
}
}
}
import flash.display.*;
class Eye extends Sprite {
public static const RADIUS:int = 20;
public function Eye():void {
graphics.beginFill(0x000000);
graphics.drawCircle(0, 0, RADIUS);
graphics.endFill();
}
}
|
Flash CS4 Professional ActionScript 3.0 (Silverlight implementation)
using SilverStone.flash.display;
using SilverStone.flash.events;
using System;
public class Test : Sprite {
private const int EYE_LEFT_CENTER_X = 150;
private const int EYE_LEFT_CENTER_Y = 200;
private const int EYE_RIGHT_CENTER_X = 310;
private const int EYE_RIGHT_CENTER_Y = 200;
private const int EYE_WIDTH = 140;
private const int EYE_HEIGHT = 240;
private const int EYE_BORDER_WIDTH = 20;
private Sprite eyeLeft;
private Sprite eyeRight;
public Test() {
graphics.clear();
graphics.beginFill(0x000000);
graphics.drawEllipse(EYE_LEFT_CENTER_X - EYE_WIDTH / 2, EYE_LEFT_CENTER_Y - EYE_HEIGHT / 2, EYE_WIDTH, EYE_HEIGHT);
graphics.drawEllipse(EYE_RIGHT_CENTER_X - EYE_WIDTH / 2, EYE_RIGHT_CENTER_Y - EYE_HEIGHT / 2, EYE_WIDTH, EYE_HEIGHT);
graphics.endFill();
graphics.beginFill(0xffffff);
graphics.drawEllipse((EYE_LEFT_CENTER_X - EYE_WIDTH / 2) + EYE_BORDER_WIDTH, (EYE_LEFT_CENTER_Y - EYE_HEIGHT / 2) + EYE_BORDER_WIDTH, EYE_WIDTH - EYE_BORDER_WIDTH * 2, EYE_HEIGHT - EYE_BORDER_WIDTH * 2);
graphics.drawEllipse((EYE_RIGHT_CENTER_X - EYE_WIDTH / 2) + EYE_BORDER_WIDTH, (EYE_RIGHT_CENTER_Y - EYE_HEIGHT / 2) + EYE_BORDER_WIDTH, EYE_WIDTH - EYE_BORDER_WIDTH * 2, EYE_HEIGHT - EYE_BORDER_WIDTH * 2);
graphics.endFill();
eyeLeft = new Eye();
eyeLeft.x = EYE_LEFT_CENTER_X;
eyeLeft.y = EYE_LEFT_CENTER_Y;
addChild(eyeLeft);
eyeRight = new Eye();
eyeRight.x = EYE_RIGHT_CENTER_X;
eyeRight.y = EYE_RIGHT_CENTER_Y;
addChild(eyeRight);
stage.addEventListener(MouseEvent.MOUSE_MOVE,
delegate(MouseEvent @event) {
double distance;
double maxDistance = EYE_WIDTH / 2 - EYE_BORDER_WIDTH - Eye.RADIUS;
distance = Math.Sqrt(Math.Pow((@event.stageX - EYE_LEFT_CENTER_X), 2) + Math.Pow((@event.stageY - EYE_LEFT_CENTER_Y), 2));
if (distance > maxDistance) {
eyeLeft.x = EYE_LEFT_CENTER_X + (@event.stageX - EYE_LEFT_CENTER_X) / distance * maxDistance;
eyeLeft.y = EYE_LEFT_CENTER_Y + (@event.stageY - EYE_LEFT_CENTER_Y) / distance * maxDistance;
}
else {
eyeLeft.x = @event.stageX;
eyeLeft.y = @event.stageY;
}
distance = Math.Sqrt(Math.Pow((@event.stageX - EYE_RIGHT_CENTER_X), 2) + Math.Pow((@event.stageY - EYE_RIGHT_CENTER_Y), 2));
if (distance > maxDistance) {
eyeRight.x = EYE_RIGHT_CENTER_X + (@event.stageX - EYE_RIGHT_CENTER_X) / distance * maxDistance;
eyeRight.y = EYE_RIGHT_CENTER_Y + (@event.stageY - EYE_RIGHT_CENTER_Y) / distance * maxDistance;
}
else {
eyeRight.x = @event.stageX;
eyeRight.y = @event.stageY;
}
}
);
}
}
class Eye : Sprite {
public const int RADIUS = 20;
public Eye() {
graphics.beginFill(0x000000);
graphics.drawCircle(0, 0, RADIUS);
graphics.endFill();
}
}
|