Flash.ActionScript.3.0动画教程_code2
2010-12-03 17:33
615 查看
/******************************************************************************/
/** @file FlashExample1_8.as
@brief FlashExample1_8 class
@note Copyright (C) 2010 ThinkinGall. All rights reserved.
@author xuyeding
@date 2010/11/29
@version 1.00
*******************************************************************************/
package {
import flash.display.Bitmap;
import flash.display.GradientType;
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.*;
import flash.ui.Keyboard;
import flash.filters.BlurFilter;
import flash.geom.Matrix;
import flash.geom.Rectangle;
import flash.geom.ColorTransform;
import flash.net.URLRequest;
/**
* FlashExample1_8 class example
* @class FlashExample1_8
*/
public class FlashExample1_8 extends MovieClip {
private var x0:Number = 100;
private var y0:Number = 100;
private var x1:Number = 0;
private var y1:Number = 0;
private var x2:Number = 300;
private var y2:Number = 200;
private var fieldx:int = 0;
private var fieldy:int = 0;
private var targetx:int = 0;
private var targety:int = 0;
private var red:int = 0;
private var green:int =0;
private var blue:int = 0;
private var redTar:int = 0;
private var greenTar:int = 0;
private var blueTar:int = 0;
[Embed(source = "DC1.jpg")]
private var pic:Class;
/** ball instance */
private var ball:Ball = null;
private var arrow:Arrow = null;
private var ballOne:Ball = null;
private var ballTwo:Ball = null;
private var ballOneFlag:Boolean = false;
private var ballTwoFlag:Boolean = false;
private var springLength:Number = 100;
/* Array Ball */
[ArrayElementType("Ball")]
private var arrBall:Array = [];
public function FlashExample1_8() {
//initialize();
/* -------forth chapter-start------*/
//drawCurve();
//loader();
//embedAsset();
//drawGredientLineer();
//drawGredientRadial();
//colorTransform();
//filtersTest();
/* -------forth chapter-end------*/
/* -------fifth chapter-start------*/
//velocity1();
//velocity2();
//acceleration();
/* -------fifth chapter-end------*/
/* ------- chapter-start------*/
//removalBall();
//fountain();
/* -------sixth chapter-end------*/
/* -------seventh chapter-start------*/
//mouseEventTrace();
//dragAndMove1();
//throwing();
/* -------seventh chapter-end------*/
/* -------eighth chapter-start------*/
//esaing();
//spring();
//chainArray();
//offSetSpring();
doubleSpring();
/* -------eighth chapter-end------*/
}
/**
* initialize
*/
public function initialize():void {
}
/*--------TEST--START----------*/
/*--------------------------------------------*/
/**
* doubleSpring
*/
public function doubleSpring():void {
ballOne = new Ball(10, 0x00FF00);
ballTwo = new Ball(10, 0x0000FF);
ballOne.x = Math.random() * stage.stageWidth / 2;
ballOne.y = Math.random() * stage.stageHeight / 2;
ballTwo.x = Math.random() * stage.stageWidth / 2;
ballTwo.y = Math.random() * stage.stageHeight / 2;
ballOne.bounc = 0.1;
ballOne.friction = 0.96;
ballTwo.bounc = 0.1;
ballTwo.friction = 0.96;
addChild(ballOne);
addChild(ballTwo);
springLength = getAFromB(ballOne.x, ballOne.y, ballTwo.x, ballTwo.y);
ballOne.addEventListener(MouseEvent.MOUSE_DOWN, onDoubleSpringHandler, false, 0, true);
ballTwo.addEventListener(MouseEvent.MOUSE_DOWN, onDoubleSpringHandler, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_UP, onDoubleSpringHandler, false, 0, true);
addEventListener(Event.ENTER_FRAME, onDoubleSpring, false, 0, true);
}
/**
* doubleSpring ENTER_FRAME
*/
public function onDoubleSpring(event:Event):void {
if(!ballOneFlag){
springTo(ballOne, ballTwo);
}
if(!ballTwoFlag){
springTo(ballTwo, ballOne);
}
onDrawLine(ballOne.x, ballOne.y, ballTwo.x, ballTwo.y);
}
/**
* doubleSpring MOUSE_DOWN
*/
public function onDoubleSpringHandler(event:MouseEvent):void {
if (event.type == MouseEvent.MOUSE_DOWN) {
Ball(event.target).startDrag();
if (Ball(event.target) == ballOne) {
ballOneFlag = true;
}
else if (Ball(event.target) == ballTwo) {
ballTwoFlag = true;
}
}else if (event.type == MouseEvent.MOUSE_UP) {
ballOne.stopDrag();
ballTwo.stopDrag();
ballOneFlag = false;
ballTwoFlag = false;
}
}
/**
* spring To
*/
public function springTo(_ballA:Ball, _ballB:Ball):void {
var angle:Number = Math.atan2(_ballA.y - _ballB.y, _ballA.x - _ballB.x)
targetx = _ballB.x + Math.cos(angle) * springLength;
targety = _ballB.y + Math.sin(angle) * springLength;
_ballA.vx += (targetx - _ballA.x) * _ballA.bounc;
_ballA.vy += (targety - _ballA.y) * _ballA.bounc;
_ballA.vx *= _ballA.friction;
_ballA.vy *= _ballA.friction;
_ballA.x += _ballA.vx;
_ballA.y += _ballA.vy;
}
/**
* onSpringHandler
*/
public function onBallDrawLineHandler(event:Event):void {
onDrawLine(ballOne.x, ballOne.y, ballTwo.x, ballTwo.y);
}
/*--------------------------------------------*/
/**
* offSetSpring
*/
public function offSetSpring():void {
ball = new Ball(10, Math.random() * 0xFFFFFF);
ball.x = stage.stageWidth/2;
ball.y = stage.stageHeight/2;
fieldx = 100;
fieldy = 100;
ball.bounc = 0.2;
ball.friction = 0.9;
addChild(ball);
springLength = getAFromB(ball.x, fieldx, ball.y, fieldy);
ball.addEventListener(MouseEvent.MOUSE_DOWN, onOffSetSpringHandler, false, 0, true);
onDrawLine(fieldx, fieldy, ball.x, ball.y);
}
/**
* offSetSpring ENTER_FRAME
*/
public function onOffSetSpring(event:Event):void {
var angle:Number = Math.atan2(ball.y - fieldy, ball.x - fieldx)
targetx = fieldx + Math.cos(angle) * springLength;
targety = fieldy + Math.sin(angle) * springLength;
ball.vx += (targetx - ball.x) * ball.bounc;
ball.vy += (targety - ball.y) * ball.bounc;
ball.vx *= ball.friction;
ball.vy *= ball.friction;
ball.x += ball.vx;
ball.y += ball.vy;trace(ball.x);
onDrawLine(fieldx, fieldy, ball.x, ball.y);
}
/**
* offSetSpring MOUSE_DOWN
*/
public function onOffSetSpringHandler(event:Event):void {
if (event.type == MouseEvent.MOUSE_DOWN) {
removeEventListener(Event.ENTER_FRAME, onOffSetSpring);
addEventListener(Event.ENTER_FRAME, onDrawLineHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, onOffSetSpringHandler, false, 0, true);
ball.startDrag();
}else if (event.type == MouseEvent.MOUSE_UP) {
removeEventListener(Event.ENTER_FRAME, onDrawLineHandler);
stage.removeEventListener(MouseEvent.MOUSE_UP, onOffSetSpringHandler);
addEventListener(Event.ENTER_FRAME, onOffSetSpring, false, 0, true);
ball.stopDrag();
}
}
/*--------------------------------------------*/
/**
* chainArray
*/
public function chainArray():void {
for (var i:int = 0; i < 10; i++) {
var picBall:Ball = new Ball(10, Math.random() * 0xFFFFFF);
picBall.bounc = 0.5;
picBall.gravity = 0;
addChild(picBall);
arrBall.push(picBall);
}
addEventListener(Event.ENTER_FRAME, onChainArrayHandler, false, 0, true);
}
/**
* chainArray ENTER_FRAME
*/
public function onChainArrayHandler(event:Event):void {
moveBall(Ball(arrBall[0]), mouseX, mouseY);
for (var i:int = 1; i < arrBall.length; i++) {
var ballcase1:Ball = Ball(arrBall[i]);
var ballcase0:Ball = Ball(arrBall[i - 1]);
moveBall(ballcase1, ballcase0.x, ballcase0.y);
}
}
/**
* move ball
*/
public function moveBall(_ball:Ball, _tarx:Number, _tary:Number):void {
_ball.vx = (_tarx - _ball.x) * _ball.bounc;
_ball.vy = (_tary - _ball.y) * _ball.bounc;
_ball.vx *= _ball.bounc;
_ball.vy += _ball.gravity;
_ball.x += _ball.vx;
_ball.y += _ball.vy;
}
/*--------------------------------------------*/
/**
* spring
*/
public function spring():void {
fieldx = stage.stageWidth / 2;
fieldy = stage.stageHeight / 2;
ball = new Ball(10);
ball.x = 100;
ball.y = 100;
ball.bounc = 0.5;
ball.friction = 0.05;
ball.gravity = 0.02;
addChild(ball);
onDrawLine(fieldx, fieldy, ball.x, ball.y);
ball.addEventListener(MouseEvent.MOUSE_DOWN, onSpringDownHandler, false, 0, true);
}
/**
* spring MOUSE_DOWN
*/
public function onSpringDownHandler(event:Event):void {
if (event.type == MouseEvent.MOUSE_DOWN) {
removeEventListener(Event.ENTER_FRAME, onSpringHandler);
addEventListener(Event.ENTER_FRAME, onDrawLineHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, onSpringDownHandler, false, 0, true);
ball.startDrag();
}else if (event.type == MouseEvent.MOUSE_UP) {
removeEventListener(Event.ENTER_FRAME, onDrawLineHandler);
stage.removeEventListener(MouseEvent.MOUSE_UP, onSpringDownHandler);
addEventListener(Event.ENTER_FRAME, onSpringHandler, false, 0, true);
ball.stopDrag();
}
}
/**
* onSpringHandler
*/
public function onSpringHandler(event:Event):void {
ball.ax = (fieldx - ball.x) * ball.bounc;
ball.ay = (fieldy - ball.y) * ball.bounc;
ball.vx += ball.ax;
ball.vy += ball.ay;
ball.vx *= (1 - ball.friction);
ball.vy *= (1 - ball.gravity);
ball.x += ball.vx;
ball.y += ball.vy;
onDrawLine(fieldx, fieldy, ball.x, ball.y);
}
/*--------------------------------------------*/
/**
* throwing
*/
public function esaing():void {
ball = new Ball(10);
ball.friction = 0.1;
ball.bounc = 0.01;
ball.alpha = 1;
addChild(ball);
addEventListener(Event.ENTER_FRAME, onEsaingHandler, false, 0, true);
}
/**
* onEsaingHandler
*/
public function onEsaingHandler(event:Event):void {
var target:Number = Math.sqrt((mouseX - ball.x) *(mouseX - ball.x) + (mouseY - ball.y) *(mouseY - ball.y));
if (target <= 0.5) {
ball.x = mouseX;
ball.y = mouseY;
ball.alpha = 1;
//removeEventListener(Event.ENTER_FRAME, onEsaingHandler);
}
else {
red = 255 * ball.bounc;
green = 255 * ball.bounc;
blue = 255 * ball.bounc;
redTar += red;
greenTar += green;
blueTar += blue;
ball.transform.colorTransform = new ColorTransform(1, 1, 1, 1, 0, 0, blueTar, 0);
ball.vx = (mouseX - ball.x) * ball.friction;
ball.vy = (mouseY - ball.y) * ball.friction;
ball.x += ball.vx;
ball.y += ball.vy;
}
}
/*--------------------------------------------*/
/**
* throwing
*/
public function throwing():void {
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
ball = new Ball(30);
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;
ball.bounc = -0.7;
ball.gravity = 0.5;
ball.friction = 0.1;
ball.vx = - 5;
ball.vy = -10;
addChild(ball);
ball.addEventListener(MouseEvent.MOUSE_DOWN, onThrowingDownHandler, false, 0, true);
addEventListener(Event.ENTER_FRAME, onThrowingHandler, false, 0, true);
}
/**
* MOUSE_DOWN
*/
public function onThrowingDownHandler(event:MouseEvent):void {
if (event.type == MouseEvent.MOUSE_DOWN) {
targetx = ball.x;
targety = ball.y;
removeEventListener(Event.ENTER_FRAME, onThrowingHandler);
addEventListener(Event.ENTER_FRAME, onTraceVelocityHandler, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_UP, onThrowingDownHandler, false, 0, true);
ball.startDrag();
}else if (event.type == MouseEvent.MOUSE_UP) {
stage.removeEventListener(MouseEvent.MOUSE_UP, onThrowingDownHandler);
removeEventListener(Event.ENTER_FRAME, onTraceVelocityHandler);
addEventListener(Event.ENTER_FRAME, onThrowingHandler, false, 0, true);
ball.stopDrag();
trace(MouseEvent.MOUSE_UP);
}
}
/**
* ENTER_FRAME
*/
public function onThrowingHandler(event:Event):void {
if (ball.x + ball.radius >= stage.stageWidth) {
ball.x = stage.stageWidth - ball.radius;
ball.vx *= ball.bounc;
}else if (ball.x - ball.radius <= 0) {
ball.x = 0 + ball.radius;
ball.vx *= ball.bounc;
}
if (ball.y + ball.radius >= stage.stageHeight) {
ball.y = stage.stageHeight - ball.radius;
ball.vy *= ball.bounc;
}else if (ball.y - ball.radius <= 0) {
ball.y = 0 + ball.radius;
ball.vy *= ball.bounc;
}
ball.vy += ball.gravity;
/* X coordinate friction*/
if (ball.y == stage.stageHeight - ball.radius) {
ball.vx *= ball.friction;
}
ball.x += ball.vx;
ball.y += ball.vy;
}
/**
* ENTER_FRAME
*/
public function onTraceVelocityHandler(event:Event):void {
ball.vx = ball.x - targetx;
ball.vy = ball.y - targety;
targetx = ball.x;
targety = ball.y;
}
/*--------------------------------------------*/
/**
* drag and move1
*/
public function dragAndMove1():void {
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
ball = new Ball(30);
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;
ball.bounc = -0.7;
ball.gravity = 0.5;
ball.friction = 0.1;
ball.vx = - 5;
ball.vy = -10;
addChild(ball);
ball.addEventListener(MouseEvent.MOUSE_DOWN, onDragAndMoveDownHandler, false, 0, true);
addEventListener(Event.ENTER_FRAME, onDragAndMoveHandler, false, 0, true);
}
/**
* MOUSE_DOWN
*/
public function onDragAndMoveDownHandler(event:MouseEvent):void {
if (event.type == MouseEvent.MOUSE_DOWN) {
//ball.vx = 0;
ball.vy = 0;
removeEventListener(Event.ENTER_FRAME, onDragAndMoveHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, onDragAndMoveDownHandler, false, 0, true);
ball.startDrag();
}else if (event.type == MouseEvent.MOUSE_UP) {
stage.removeEventListener(MouseEvent.MOUSE_UP, onDragAndMoveDownHandler);
addEventListener(Event.ENTER_FRAME, onDragAndMoveHandler, false, 0, true);
ball.stopDrag();
}
}
/**
* ENTER_FRAME
*/
public function onDragAndMoveHandler(event:Event):void {
if (ball.x + ball.radius >= stage.stageWidth) {
ball.x = stage.stageWidth - ball.radius;
ball.vx *= ball.bounc;
}else if (ball.x - ball.radius <= 0) {
ball.x = 0 + ball.radius;
ball.vx *= ball.bounc;
}
if (ball.y + ball.radius >= stage.stageHeight) {
ball.y = stage.stageHeight - ball.radius;
ball.vy *= ball.bounc;
}else if (ball.y - ball.radius <= 0) {
ball.y = 0 + ball.radius;
ball.vy *= ball.bounc;
}
ball.vy += ball.gravity;
/* X coordinate friction*/
if (ball.y == stage.stageHeight - ball.radius) {
//ball.vx *= ball.friction;
}
ball.x += ball.vx;
ball.y += ball.vy;
}
/*--------------------------------------------*/
/**
* mouseEventTrace
*/
public function mouseEventTrace():void {
ball = new Ball(30);
addChild(ball);
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;
ball.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler1, false, 0, true);
ball.addEventListener(MouseEvent.MOUSE_UP, onMouseDownHandler1, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler2, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_UP, onMouseDownHandler2, false, 0, true);
}
/**
* MOUSE_DOWN
*/
public function onMouseDownHandler1(event:MouseEvent):void {
/* only cursor on the MC */
if (event.type == MouseEvent.MOUSE_DOWN) {
//ball.startDrag(true);
//ball.startDrag(false);
ball.startDrag(false, new Rectangle(100, 100, 100, 100));
//trace("ball-MOUSE_DOWN");
}else if (event.type == MouseEvent.MOUSE_UP) {
ball.stopDrag();
//trace("ball-MOUSE_UP");
}
}
/**
* MOUSE_DOWN
*/
public function onMouseDownHandler2(event:MouseEvent):void {
if (event.type == MouseEvent.MOUSE_DOWN) {
//ball.startDrag(false);
//stage.addEventListener(MouseEvent.MOUSE_UP, onMouseDownHandler2, false, 0, true);
//trace("stage-MOUSE_DOWN");
}else if (event.type == MouseEvent.MOUSE_UP) {
//stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseDownHandler2);
//ball.stopDrag();
//trace("stage-MOUSE_UP");
}
}
/*--------------------------------------------*/
/**
* fountain
*/
public function fountain():void {
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
for (var i:int = 0; i < 100; i++) {
var picBall:Ball = new Ball(2, Math.random() * 0xFFFFFF);
picBall.x = stage.stageWidth / 2;
picBall.y = stage.stageHeight;
picBall.vx = Math.random() * 4 - 8;
picBall.vy = Math.random() * 5 -20;
addChild(picBall);
arrBall.push(picBall);
}
addEventListener(Event.ENTER_FRAME, onfountainHandler, false, 0, true);
}
/**
* fountain
*/
public function onfountainHandler(event:Event):void {
for (var i:int = arrBall.length - 1; i > 0; i--) {
var ballcase:Ball = Ball(arrBall[i]);
ballcase.x += ballcase.vx;
ballcase.vy += 1; // gravity
ballcase.y += ballcase.vy;
if ((ballcase.x - ballcase.radius > stage.stageWidth)
|| (ballcase.x + ballcase.radius < 0)
|| (ballcase.y - ballcase.radius > stage.stageHeight)
|| (ballcase.y + ballcase.radius < 0)) {
ballcase.x = stage.stageWidth / 2;
ballcase.y = stage.stageHeight;
ballcase.vx = Math.random() * 4 - 8;
ballcase.vy = Math.random() * 5 -20;
}
}
}
/*--------------------------------------------*/
/**
* removalBall
*/
public function removalBall():void {
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
for (var i:int = 0; i < 10; i++) {
var picBall:Ball = new Ball(10);
picBall.x = Math.random() * stage.stageWidth / 2;
picBall.y = Math.random() * stage.stageHeight / 2;
picBall.vx = Math.random() * 2 - 1;
picBall.vy = Math.random() * 2 - 1;
addChild(picBall);
arrBall.push(picBall);
}
addEventListener(Event.ENTER_FRAME, onRemovalBallHandler, false, 0, true);
}
/**
* removalBall
*/
public function onRemovalBallHandler(event:Event):void {
for (var i:int = arrBall.length - 1; i > 0; i--) {
var ballcase:Ball = Ball(arrBall[i]);
ballcase.x += ballcase.vx;
ballcase.y += ballcase.vy;
if ((ballcase.x - ballcase.radius > stage.stageWidth)
|| (ballcase.x + ballcase.radius < 0)
|| (ballcase.y - ballcase.radius > stage.stageHeight)
|| (ballcase.y + ballcase.radius < 0)) {
trace(ballcase.x);trace(ballcase.y);
removeChild(ballcase);
arrBall.splice(i, 1);
if (arrBall.length <= 0) {
removeEventListener(Event.ENTER_FRAME, onRemovalBallHandler);
}
}
}
}
/*--------------------------------------------*/
/**
* acceleration
*/
public function acceleration():void {
ball = new Ball(10);
addChild(ball);
ball.bounc = -0.7;
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;
addEventListener(Event.ENTER_FRAME, onEnterFrameAccelerationHandler2, false, 0, true);
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler2, false, 0, true);
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler2, false, 0, true);
}
/**
* acceleration
* @param evet
*/
private function onKeyDownHandler2(event:KeyboardEvent):void {
var key:uint = event.keyCode;
switch(key) {
case Keyboard.LEFT:
ball.ax -= 0.01;
break;
case Keyboard.UP:
ball.ay -= 0.01;
break;
case Keyboard.RIGHT:
ball.ax += 0.01;
break;
case Keyboard.DOWN:
ball.ay += 0.01;
break;
default:
trace(key);
break;
}
}
/**
* acceleration
* @param evet
*/
private function onKeyUpHandler2(event:KeyboardEvent):void {
ball.ax = 0;
ball.ay = 0;
}
/**
* acceleration
* @param evet
*/
private function onEnterFrameAccelerationHandler2(event:Event):void {
if (ball.x + ball.radius >= stage.stageWidth) {
ball.x = stage.stageWidth - ball.radius;
ball.vx *= ball.bounc;
}else if (ball.x - ball.radius <= 0) {
ball.x = 0 + ball.radius;
ball.vx *= ball.bounc;
}
if (ball.y + ball.radius >= stage.stageHeight) {
ball.y = stage.stageHeight - ball.radius;
ball.vy *= ball.bounc;
}else if (ball.y - ball.radius <= 0) {
ball.y = 0 + ball.radius;
ball.vy *= ball.bounc;
}
else {
}
ball.vx += ball.ax;
ball.vy += ball.ay;
//ball.vy += 0.02;
ball.x += ball.vx;
ball.y += ball.vy;
//trace("x:" + ball.x + " " + "y:" + ball.y);
}
/*--------------------------------------------*/
/**
* velocity
*/
public function velocity2():void {
arrow = new Arrow();
arrow.bounc = 0.7;
addChild(arrow);
arrow.x = 100;
arrow.y = 100;
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler2, false, 0, true);
}
/**
* velocity2
* @param evet
*/
private function onEnterFrameHandler2(evet:Event):void {
var dx:Number = mouseX - arrow.x;
var dy:Number = mouseY - arrow.y;
var vr:Number = 5;
// get radian
var radian:Number = Math.atan2(dy, dx);
/* get angle */
arrow.rotation = radian * 180 / Math.PI;
//arrow.rotation += vr;
/* set speed */
arrow.ax = Math.cos(radian) * 0.3;
arrow.ay = Math.sin(radian) * 0.3;
arrow.vx += arrow.ax;
arrow.vy += arrow.ay;
//arrow.vx *= arrow.bounc;
//arrow.vy *= arrow.bounc;
arrow.x += arrow.vx;
arrow.y += arrow.vy;
}
/*--------------------------------------------*/
/**
* velocity1
*/
public function velocity1():void {
ball = new Ball();
addChild(ball);
ball.x = 50;
ball.y = 100;
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler1, false, 0, true);
}
/**
* velocity
* @param evet
*/
private function onEnterFrameHandler1(evet:Event):void {
ball.vx = Math.cos(45) * 3;
ball.vy = Math.sin(45) * 3;
ball.x += ball.vx;
ball.y += ball.vy;
}
/*--------------------------------------------*/
/**
* filter
*/
public function filtersTest():void {
graphics.lineStyle(1,0,0);
graphics.beginFill(0xFF0000, 1);
graphics.drawCircle(200, 200, 100);
graphics.endFill();
filters = [new BlurFilter(20, 20, 1)];
}
/*--------------------------------------------*/
/**
* colorTransform
*/
public function colorTransform():void {
var img:Bitmap = new pic();
addChild(img);
img.transform.colorTransform = new ColorTransform(-1, -1, -1, 1, 255, 255, 255, 0);
}
/*--------------------------------------------*/
/**
* beginGradientFill,GradientType.RADIAL
*/
public function drawGredientRadial():void {
var x:Number = 150;
var y:Number = 250;
var r:Number = 100;
var color1:int = 0xFF0000;//red
var color2:int = 0xFFFFFF;//black
graphics.lineStyle(1);
graphics.lineStyle(1, 0, 0);
var color:Array = [color1, color2];
var alphas:Array = [1, 1];
var ratios:Array = [0, 255];
var matrix:Matrix = new Matrix();
matrix.createGradientBox(r * 2, r * 2, 0, x, y);
graphics.beginGradientFill(GradientType.RADIAL, color, alphas, ratios, matrix);
graphics.drawCircle(x + r, y + r, r);
graphics.endFill();
}
/*--------------------------------------------*/
/**
* beginGradientFill,GradientType.LINEAR
*/
public function drawGredientLineer():void {
graphics.lineStyle(1);
var color:Array = [0xff0000, 0xffffff];
var alphas:Array = [1, 1];
var ratios:Array = [0, 255];
var matrix:Matrix = new Matrix();
matrix.createGradientBox(100, 100, 0, 0, 0);
graphics.beginGradientFill(GradientType.LINEAR, color, alphas, ratios, matrix);
graphics.drawRect(0, 0, 100, 100);
graphics.endFill();
}
/*--------------------------------------------*/
/**
* drawCurve
*/
public function drawCurve():void {
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMoveHandler, false, 0, true);
}
/**
* curveTo
* @param event
*/
public function onMouseMoveHandler(event:MouseEvent):void {
x1 = mouseX * 2 - (x0 + x2) / 2;
y1 = mouseY * 2 - (y0 + y2) / 2;
graphics.clear();
graphics.lineStyle(1);
graphics.moveTo(x0, y0);
graphics.curveTo(x1, y1, x2, y2);
}
/*--------------------------------------------*/
/**
* Embed
*/
public function embedAsset():void {
var img:Bitmap = new pic();
addChild(img);
}
/*--------------------------------------------*/
/**
* loader
*/
public function loader():void {
var loader:Loader = new Loader();
addChild(loader);
loader.load(new URLRequest("DC1.jpg"));
}
/*--------------------------------------------*/
/*-------common*/
public function getAFromB(x1:Number, x2:Number, y1:Number,y2:Number):Number {
return Math.sqrt((x1 - x2) *(x1 - x2) + (y1 - y2) *(y1 - y2));
}
public function getNewBall(_ball:Ball, length:Number) {
}
/**
* onSpringHandler
*/
public function onDrawLineHandler(event:Event):void {
onDrawLine(fieldx, fieldy, ball.x, ball.y);
}
/**
* draw line
*/
public function onDrawLine(x1:Number, y1:Number, x2:Number,y2:Number):void {
graphics.clear();
graphics.lineStyle(1);
graphics.moveTo(x1, y1);
graphics.lineTo(x2, y2);
}
/*-------common*/
}
}
/** @file FlashExample1_8.as
@brief FlashExample1_8 class
@note Copyright (C) 2010 ThinkinGall. All rights reserved.
@author xuyeding
@date 2010/11/29
@version 1.00
*******************************************************************************/
package {
import flash.display.Bitmap;
import flash.display.GradientType;
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.*;
import flash.ui.Keyboard;
import flash.filters.BlurFilter;
import flash.geom.Matrix;
import flash.geom.Rectangle;
import flash.geom.ColorTransform;
import flash.net.URLRequest;
/**
* FlashExample1_8 class example
* @class FlashExample1_8
*/
public class FlashExample1_8 extends MovieClip {
private var x0:Number = 100;
private var y0:Number = 100;
private var x1:Number = 0;
private var y1:Number = 0;
private var x2:Number = 300;
private var y2:Number = 200;
private var fieldx:int = 0;
private var fieldy:int = 0;
private var targetx:int = 0;
private var targety:int = 0;
private var red:int = 0;
private var green:int =0;
private var blue:int = 0;
private var redTar:int = 0;
private var greenTar:int = 0;
private var blueTar:int = 0;
[Embed(source = "DC1.jpg")]
private var pic:Class;
/** ball instance */
private var ball:Ball = null;
private var arrow:Arrow = null;
private var ballOne:Ball = null;
private var ballTwo:Ball = null;
private var ballOneFlag:Boolean = false;
private var ballTwoFlag:Boolean = false;
private var springLength:Number = 100;
/* Array Ball */
[ArrayElementType("Ball")]
private var arrBall:Array = [];
public function FlashExample1_8() {
//initialize();
/* -------forth chapter-start------*/
//drawCurve();
//loader();
//embedAsset();
//drawGredientLineer();
//drawGredientRadial();
//colorTransform();
//filtersTest();
/* -------forth chapter-end------*/
/* -------fifth chapter-start------*/
//velocity1();
//velocity2();
//acceleration();
/* -------fifth chapter-end------*/
/* ------- chapter-start------*/
//removalBall();
//fountain();
/* -------sixth chapter-end------*/
/* -------seventh chapter-start------*/
//mouseEventTrace();
//dragAndMove1();
//throwing();
/* -------seventh chapter-end------*/
/* -------eighth chapter-start------*/
//esaing();
//spring();
//chainArray();
//offSetSpring();
doubleSpring();
/* -------eighth chapter-end------*/
}
/**
* initialize
*/
public function initialize():void {
}
/*--------TEST--START----------*/
/*--------------------------------------------*/
/**
* doubleSpring
*/
public function doubleSpring():void {
ballOne = new Ball(10, 0x00FF00);
ballTwo = new Ball(10, 0x0000FF);
ballOne.x = Math.random() * stage.stageWidth / 2;
ballOne.y = Math.random() * stage.stageHeight / 2;
ballTwo.x = Math.random() * stage.stageWidth / 2;
ballTwo.y = Math.random() * stage.stageHeight / 2;
ballOne.bounc = 0.1;
ballOne.friction = 0.96;
ballTwo.bounc = 0.1;
ballTwo.friction = 0.96;
addChild(ballOne);
addChild(ballTwo);
springLength = getAFromB(ballOne.x, ballOne.y, ballTwo.x, ballTwo.y);
ballOne.addEventListener(MouseEvent.MOUSE_DOWN, onDoubleSpringHandler, false, 0, true);
ballTwo.addEventListener(MouseEvent.MOUSE_DOWN, onDoubleSpringHandler, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_UP, onDoubleSpringHandler, false, 0, true);
addEventListener(Event.ENTER_FRAME, onDoubleSpring, false, 0, true);
}
/**
* doubleSpring ENTER_FRAME
*/
public function onDoubleSpring(event:Event):void {
if(!ballOneFlag){
springTo(ballOne, ballTwo);
}
if(!ballTwoFlag){
springTo(ballTwo, ballOne);
}
onDrawLine(ballOne.x, ballOne.y, ballTwo.x, ballTwo.y);
}
/**
* doubleSpring MOUSE_DOWN
*/
public function onDoubleSpringHandler(event:MouseEvent):void {
if (event.type == MouseEvent.MOUSE_DOWN) {
Ball(event.target).startDrag();
if (Ball(event.target) == ballOne) {
ballOneFlag = true;
}
else if (Ball(event.target) == ballTwo) {
ballTwoFlag = true;
}
}else if (event.type == MouseEvent.MOUSE_UP) {
ballOne.stopDrag();
ballTwo.stopDrag();
ballOneFlag = false;
ballTwoFlag = false;
}
}
/**
* spring To
*/
public function springTo(_ballA:Ball, _ballB:Ball):void {
var angle:Number = Math.atan2(_ballA.y - _ballB.y, _ballA.x - _ballB.x)
targetx = _ballB.x + Math.cos(angle) * springLength;
targety = _ballB.y + Math.sin(angle) * springLength;
_ballA.vx += (targetx - _ballA.x) * _ballA.bounc;
_ballA.vy += (targety - _ballA.y) * _ballA.bounc;
_ballA.vx *= _ballA.friction;
_ballA.vy *= _ballA.friction;
_ballA.x += _ballA.vx;
_ballA.y += _ballA.vy;
}
/**
* onSpringHandler
*/
public function onBallDrawLineHandler(event:Event):void {
onDrawLine(ballOne.x, ballOne.y, ballTwo.x, ballTwo.y);
}
/*--------------------------------------------*/
/**
* offSetSpring
*/
public function offSetSpring():void {
ball = new Ball(10, Math.random() * 0xFFFFFF);
ball.x = stage.stageWidth/2;
ball.y = stage.stageHeight/2;
fieldx = 100;
fieldy = 100;
ball.bounc = 0.2;
ball.friction = 0.9;
addChild(ball);
springLength = getAFromB(ball.x, fieldx, ball.y, fieldy);
ball.addEventListener(MouseEvent.MOUSE_DOWN, onOffSetSpringHandler, false, 0, true);
onDrawLine(fieldx, fieldy, ball.x, ball.y);
}
/**
* offSetSpring ENTER_FRAME
*/
public function onOffSetSpring(event:Event):void {
var angle:Number = Math.atan2(ball.y - fieldy, ball.x - fieldx)
targetx = fieldx + Math.cos(angle) * springLength;
targety = fieldy + Math.sin(angle) * springLength;
ball.vx += (targetx - ball.x) * ball.bounc;
ball.vy += (targety - ball.y) * ball.bounc;
ball.vx *= ball.friction;
ball.vy *= ball.friction;
ball.x += ball.vx;
ball.y += ball.vy;trace(ball.x);
onDrawLine(fieldx, fieldy, ball.x, ball.y);
}
/**
* offSetSpring MOUSE_DOWN
*/
public function onOffSetSpringHandler(event:Event):void {
if (event.type == MouseEvent.MOUSE_DOWN) {
removeEventListener(Event.ENTER_FRAME, onOffSetSpring);
addEventListener(Event.ENTER_FRAME, onDrawLineHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, onOffSetSpringHandler, false, 0, true);
ball.startDrag();
}else if (event.type == MouseEvent.MOUSE_UP) {
removeEventListener(Event.ENTER_FRAME, onDrawLineHandler);
stage.removeEventListener(MouseEvent.MOUSE_UP, onOffSetSpringHandler);
addEventListener(Event.ENTER_FRAME, onOffSetSpring, false, 0, true);
ball.stopDrag();
}
}
/*--------------------------------------------*/
/**
* chainArray
*/
public function chainArray():void {
for (var i:int = 0; i < 10; i++) {
var picBall:Ball = new Ball(10, Math.random() * 0xFFFFFF);
picBall.bounc = 0.5;
picBall.gravity = 0;
addChild(picBall);
arrBall.push(picBall);
}
addEventListener(Event.ENTER_FRAME, onChainArrayHandler, false, 0, true);
}
/**
* chainArray ENTER_FRAME
*/
public function onChainArrayHandler(event:Event):void {
moveBall(Ball(arrBall[0]), mouseX, mouseY);
for (var i:int = 1; i < arrBall.length; i++) {
var ballcase1:Ball = Ball(arrBall[i]);
var ballcase0:Ball = Ball(arrBall[i - 1]);
moveBall(ballcase1, ballcase0.x, ballcase0.y);
}
}
/**
* move ball
*/
public function moveBall(_ball:Ball, _tarx:Number, _tary:Number):void {
_ball.vx = (_tarx - _ball.x) * _ball.bounc;
_ball.vy = (_tary - _ball.y) * _ball.bounc;
_ball.vx *= _ball.bounc;
_ball.vy += _ball.gravity;
_ball.x += _ball.vx;
_ball.y += _ball.vy;
}
/*--------------------------------------------*/
/**
* spring
*/
public function spring():void {
fieldx = stage.stageWidth / 2;
fieldy = stage.stageHeight / 2;
ball = new Ball(10);
ball.x = 100;
ball.y = 100;
ball.bounc = 0.5;
ball.friction = 0.05;
ball.gravity = 0.02;
addChild(ball);
onDrawLine(fieldx, fieldy, ball.x, ball.y);
ball.addEventListener(MouseEvent.MOUSE_DOWN, onSpringDownHandler, false, 0, true);
}
/**
* spring MOUSE_DOWN
*/
public function onSpringDownHandler(event:Event):void {
if (event.type == MouseEvent.MOUSE_DOWN) {
removeEventListener(Event.ENTER_FRAME, onSpringHandler);
addEventListener(Event.ENTER_FRAME, onDrawLineHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, onSpringDownHandler, false, 0, true);
ball.startDrag();
}else if (event.type == MouseEvent.MOUSE_UP) {
removeEventListener(Event.ENTER_FRAME, onDrawLineHandler);
stage.removeEventListener(MouseEvent.MOUSE_UP, onSpringDownHandler);
addEventListener(Event.ENTER_FRAME, onSpringHandler, false, 0, true);
ball.stopDrag();
}
}
/**
* onSpringHandler
*/
public function onSpringHandler(event:Event):void {
ball.ax = (fieldx - ball.x) * ball.bounc;
ball.ay = (fieldy - ball.y) * ball.bounc;
ball.vx += ball.ax;
ball.vy += ball.ay;
ball.vx *= (1 - ball.friction);
ball.vy *= (1 - ball.gravity);
ball.x += ball.vx;
ball.y += ball.vy;
onDrawLine(fieldx, fieldy, ball.x, ball.y);
}
/*--------------------------------------------*/
/**
* throwing
*/
public function esaing():void {
ball = new Ball(10);
ball.friction = 0.1;
ball.bounc = 0.01;
ball.alpha = 1;
addChild(ball);
addEventListener(Event.ENTER_FRAME, onEsaingHandler, false, 0, true);
}
/**
* onEsaingHandler
*/
public function onEsaingHandler(event:Event):void {
var target:Number = Math.sqrt((mouseX - ball.x) *(mouseX - ball.x) + (mouseY - ball.y) *(mouseY - ball.y));
if (target <= 0.5) {
ball.x = mouseX;
ball.y = mouseY;
ball.alpha = 1;
//removeEventListener(Event.ENTER_FRAME, onEsaingHandler);
}
else {
red = 255 * ball.bounc;
green = 255 * ball.bounc;
blue = 255 * ball.bounc;
redTar += red;
greenTar += green;
blueTar += blue;
ball.transform.colorTransform = new ColorTransform(1, 1, 1, 1, 0, 0, blueTar, 0);
ball.vx = (mouseX - ball.x) * ball.friction;
ball.vy = (mouseY - ball.y) * ball.friction;
ball.x += ball.vx;
ball.y += ball.vy;
}
}
/*--------------------------------------------*/
/**
* throwing
*/
public function throwing():void {
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
ball = new Ball(30);
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;
ball.bounc = -0.7;
ball.gravity = 0.5;
ball.friction = 0.1;
ball.vx = - 5;
ball.vy = -10;
addChild(ball);
ball.addEventListener(MouseEvent.MOUSE_DOWN, onThrowingDownHandler, false, 0, true);
addEventListener(Event.ENTER_FRAME, onThrowingHandler, false, 0, true);
}
/**
* MOUSE_DOWN
*/
public function onThrowingDownHandler(event:MouseEvent):void {
if (event.type == MouseEvent.MOUSE_DOWN) {
targetx = ball.x;
targety = ball.y;
removeEventListener(Event.ENTER_FRAME, onThrowingHandler);
addEventListener(Event.ENTER_FRAME, onTraceVelocityHandler, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_UP, onThrowingDownHandler, false, 0, true);
ball.startDrag();
}else if (event.type == MouseEvent.MOUSE_UP) {
stage.removeEventListener(MouseEvent.MOUSE_UP, onThrowingDownHandler);
removeEventListener(Event.ENTER_FRAME, onTraceVelocityHandler);
addEventListener(Event.ENTER_FRAME, onThrowingHandler, false, 0, true);
ball.stopDrag();
trace(MouseEvent.MOUSE_UP);
}
}
/**
* ENTER_FRAME
*/
public function onThrowingHandler(event:Event):void {
if (ball.x + ball.radius >= stage.stageWidth) {
ball.x = stage.stageWidth - ball.radius;
ball.vx *= ball.bounc;
}else if (ball.x - ball.radius <= 0) {
ball.x = 0 + ball.radius;
ball.vx *= ball.bounc;
}
if (ball.y + ball.radius >= stage.stageHeight) {
ball.y = stage.stageHeight - ball.radius;
ball.vy *= ball.bounc;
}else if (ball.y - ball.radius <= 0) {
ball.y = 0 + ball.radius;
ball.vy *= ball.bounc;
}
ball.vy += ball.gravity;
/* X coordinate friction*/
if (ball.y == stage.stageHeight - ball.radius) {
ball.vx *= ball.friction;
}
ball.x += ball.vx;
ball.y += ball.vy;
}
/**
* ENTER_FRAME
*/
public function onTraceVelocityHandler(event:Event):void {
ball.vx = ball.x - targetx;
ball.vy = ball.y - targety;
targetx = ball.x;
targety = ball.y;
}
/*--------------------------------------------*/
/**
* drag and move1
*/
public function dragAndMove1():void {
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
ball = new Ball(30);
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;
ball.bounc = -0.7;
ball.gravity = 0.5;
ball.friction = 0.1;
ball.vx = - 5;
ball.vy = -10;
addChild(ball);
ball.addEventListener(MouseEvent.MOUSE_DOWN, onDragAndMoveDownHandler, false, 0, true);
addEventListener(Event.ENTER_FRAME, onDragAndMoveHandler, false, 0, true);
}
/**
* MOUSE_DOWN
*/
public function onDragAndMoveDownHandler(event:MouseEvent):void {
if (event.type == MouseEvent.MOUSE_DOWN) {
//ball.vx = 0;
ball.vy = 0;
removeEventListener(Event.ENTER_FRAME, onDragAndMoveHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, onDragAndMoveDownHandler, false, 0, true);
ball.startDrag();
}else if (event.type == MouseEvent.MOUSE_UP) {
stage.removeEventListener(MouseEvent.MOUSE_UP, onDragAndMoveDownHandler);
addEventListener(Event.ENTER_FRAME, onDragAndMoveHandler, false, 0, true);
ball.stopDrag();
}
}
/**
* ENTER_FRAME
*/
public function onDragAndMoveHandler(event:Event):void {
if (ball.x + ball.radius >= stage.stageWidth) {
ball.x = stage.stageWidth - ball.radius;
ball.vx *= ball.bounc;
}else if (ball.x - ball.radius <= 0) {
ball.x = 0 + ball.radius;
ball.vx *= ball.bounc;
}
if (ball.y + ball.radius >= stage.stageHeight) {
ball.y = stage.stageHeight - ball.radius;
ball.vy *= ball.bounc;
}else if (ball.y - ball.radius <= 0) {
ball.y = 0 + ball.radius;
ball.vy *= ball.bounc;
}
ball.vy += ball.gravity;
/* X coordinate friction*/
if (ball.y == stage.stageHeight - ball.radius) {
//ball.vx *= ball.friction;
}
ball.x += ball.vx;
ball.y += ball.vy;
}
/*--------------------------------------------*/
/**
* mouseEventTrace
*/
public function mouseEventTrace():void {
ball = new Ball(30);
addChild(ball);
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;
ball.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler1, false, 0, true);
ball.addEventListener(MouseEvent.MOUSE_UP, onMouseDownHandler1, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler2, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_UP, onMouseDownHandler2, false, 0, true);
}
/**
* MOUSE_DOWN
*/
public function onMouseDownHandler1(event:MouseEvent):void {
/* only cursor on the MC */
if (event.type == MouseEvent.MOUSE_DOWN) {
//ball.startDrag(true);
//ball.startDrag(false);
ball.startDrag(false, new Rectangle(100, 100, 100, 100));
//trace("ball-MOUSE_DOWN");
}else if (event.type == MouseEvent.MOUSE_UP) {
ball.stopDrag();
//trace("ball-MOUSE_UP");
}
}
/**
* MOUSE_DOWN
*/
public function onMouseDownHandler2(event:MouseEvent):void {
if (event.type == MouseEvent.MOUSE_DOWN) {
//ball.startDrag(false);
//stage.addEventListener(MouseEvent.MOUSE_UP, onMouseDownHandler2, false, 0, true);
//trace("stage-MOUSE_DOWN");
}else if (event.type == MouseEvent.MOUSE_UP) {
//stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseDownHandler2);
//ball.stopDrag();
//trace("stage-MOUSE_UP");
}
}
/*--------------------------------------------*/
/**
* fountain
*/
public function fountain():void {
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
for (var i:int = 0; i < 100; i++) {
var picBall:Ball = new Ball(2, Math.random() * 0xFFFFFF);
picBall.x = stage.stageWidth / 2;
picBall.y = stage.stageHeight;
picBall.vx = Math.random() * 4 - 8;
picBall.vy = Math.random() * 5 -20;
addChild(picBall);
arrBall.push(picBall);
}
addEventListener(Event.ENTER_FRAME, onfountainHandler, false, 0, true);
}
/**
* fountain
*/
public function onfountainHandler(event:Event):void {
for (var i:int = arrBall.length - 1; i > 0; i--) {
var ballcase:Ball = Ball(arrBall[i]);
ballcase.x += ballcase.vx;
ballcase.vy += 1; // gravity
ballcase.y += ballcase.vy;
if ((ballcase.x - ballcase.radius > stage.stageWidth)
|| (ballcase.x + ballcase.radius < 0)
|| (ballcase.y - ballcase.radius > stage.stageHeight)
|| (ballcase.y + ballcase.radius < 0)) {
ballcase.x = stage.stageWidth / 2;
ballcase.y = stage.stageHeight;
ballcase.vx = Math.random() * 4 - 8;
ballcase.vy = Math.random() * 5 -20;
}
}
}
/*--------------------------------------------*/
/**
* removalBall
*/
public function removalBall():void {
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
for (var i:int = 0; i < 10; i++) {
var picBall:Ball = new Ball(10);
picBall.x = Math.random() * stage.stageWidth / 2;
picBall.y = Math.random() * stage.stageHeight / 2;
picBall.vx = Math.random() * 2 - 1;
picBall.vy = Math.random() * 2 - 1;
addChild(picBall);
arrBall.push(picBall);
}
addEventListener(Event.ENTER_FRAME, onRemovalBallHandler, false, 0, true);
}
/**
* removalBall
*/
public function onRemovalBallHandler(event:Event):void {
for (var i:int = arrBall.length - 1; i > 0; i--) {
var ballcase:Ball = Ball(arrBall[i]);
ballcase.x += ballcase.vx;
ballcase.y += ballcase.vy;
if ((ballcase.x - ballcase.radius > stage.stageWidth)
|| (ballcase.x + ballcase.radius < 0)
|| (ballcase.y - ballcase.radius > stage.stageHeight)
|| (ballcase.y + ballcase.radius < 0)) {
trace(ballcase.x);trace(ballcase.y);
removeChild(ballcase);
arrBall.splice(i, 1);
if (arrBall.length <= 0) {
removeEventListener(Event.ENTER_FRAME, onRemovalBallHandler);
}
}
}
}
/*--------------------------------------------*/
/**
* acceleration
*/
public function acceleration():void {
ball = new Ball(10);
addChild(ball);
ball.bounc = -0.7;
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;
addEventListener(Event.ENTER_FRAME, onEnterFrameAccelerationHandler2, false, 0, true);
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler2, false, 0, true);
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler2, false, 0, true);
}
/**
* acceleration
* @param evet
*/
private function onKeyDownHandler2(event:KeyboardEvent):void {
var key:uint = event.keyCode;
switch(key) {
case Keyboard.LEFT:
ball.ax -= 0.01;
break;
case Keyboard.UP:
ball.ay -= 0.01;
break;
case Keyboard.RIGHT:
ball.ax += 0.01;
break;
case Keyboard.DOWN:
ball.ay += 0.01;
break;
default:
trace(key);
break;
}
}
/**
* acceleration
* @param evet
*/
private function onKeyUpHandler2(event:KeyboardEvent):void {
ball.ax = 0;
ball.ay = 0;
}
/**
* acceleration
* @param evet
*/
private function onEnterFrameAccelerationHandler2(event:Event):void {
if (ball.x + ball.radius >= stage.stageWidth) {
ball.x = stage.stageWidth - ball.radius;
ball.vx *= ball.bounc;
}else if (ball.x - ball.radius <= 0) {
ball.x = 0 + ball.radius;
ball.vx *= ball.bounc;
}
if (ball.y + ball.radius >= stage.stageHeight) {
ball.y = stage.stageHeight - ball.radius;
ball.vy *= ball.bounc;
}else if (ball.y - ball.radius <= 0) {
ball.y = 0 + ball.radius;
ball.vy *= ball.bounc;
}
else {
}
ball.vx += ball.ax;
ball.vy += ball.ay;
//ball.vy += 0.02;
ball.x += ball.vx;
ball.y += ball.vy;
//trace("x:" + ball.x + " " + "y:" + ball.y);
}
/*--------------------------------------------*/
/**
* velocity
*/
public function velocity2():void {
arrow = new Arrow();
arrow.bounc = 0.7;
addChild(arrow);
arrow.x = 100;
arrow.y = 100;
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler2, false, 0, true);
}
/**
* velocity2
* @param evet
*/
private function onEnterFrameHandler2(evet:Event):void {
var dx:Number = mouseX - arrow.x;
var dy:Number = mouseY - arrow.y;
var vr:Number = 5;
// get radian
var radian:Number = Math.atan2(dy, dx);
/* get angle */
arrow.rotation = radian * 180 / Math.PI;
//arrow.rotation += vr;
/* set speed */
arrow.ax = Math.cos(radian) * 0.3;
arrow.ay = Math.sin(radian) * 0.3;
arrow.vx += arrow.ax;
arrow.vy += arrow.ay;
//arrow.vx *= arrow.bounc;
//arrow.vy *= arrow.bounc;
arrow.x += arrow.vx;
arrow.y += arrow.vy;
}
/*--------------------------------------------*/
/**
* velocity1
*/
public function velocity1():void {
ball = new Ball();
addChild(ball);
ball.x = 50;
ball.y = 100;
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler1, false, 0, true);
}
/**
* velocity
* @param evet
*/
private function onEnterFrameHandler1(evet:Event):void {
ball.vx = Math.cos(45) * 3;
ball.vy = Math.sin(45) * 3;
ball.x += ball.vx;
ball.y += ball.vy;
}
/*--------------------------------------------*/
/**
* filter
*/
public function filtersTest():void {
graphics.lineStyle(1,0,0);
graphics.beginFill(0xFF0000, 1);
graphics.drawCircle(200, 200, 100);
graphics.endFill();
filters = [new BlurFilter(20, 20, 1)];
}
/*--------------------------------------------*/
/**
* colorTransform
*/
public function colorTransform():void {
var img:Bitmap = new pic();
addChild(img);
img.transform.colorTransform = new ColorTransform(-1, -1, -1, 1, 255, 255, 255, 0);
}
/*--------------------------------------------*/
/**
* beginGradientFill,GradientType.RADIAL
*/
public function drawGredientRadial():void {
var x:Number = 150;
var y:Number = 250;
var r:Number = 100;
var color1:int = 0xFF0000;//red
var color2:int = 0xFFFFFF;//black
graphics.lineStyle(1);
graphics.lineStyle(1, 0, 0);
var color:Array = [color1, color2];
var alphas:Array = [1, 1];
var ratios:Array = [0, 255];
var matrix:Matrix = new Matrix();
matrix.createGradientBox(r * 2, r * 2, 0, x, y);
graphics.beginGradientFill(GradientType.RADIAL, color, alphas, ratios, matrix);
graphics.drawCircle(x + r, y + r, r);
graphics.endFill();
}
/*--------------------------------------------*/
/**
* beginGradientFill,GradientType.LINEAR
*/
public function drawGredientLineer():void {
graphics.lineStyle(1);
var color:Array = [0xff0000, 0xffffff];
var alphas:Array = [1, 1];
var ratios:Array = [0, 255];
var matrix:Matrix = new Matrix();
matrix.createGradientBox(100, 100, 0, 0, 0);
graphics.beginGradientFill(GradientType.LINEAR, color, alphas, ratios, matrix);
graphics.drawRect(0, 0, 100, 100);
graphics.endFill();
}
/*--------------------------------------------*/
/**
* drawCurve
*/
public function drawCurve():void {
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMoveHandler, false, 0, true);
}
/**
* curveTo
* @param event
*/
public function onMouseMoveHandler(event:MouseEvent):void {
x1 = mouseX * 2 - (x0 + x2) / 2;
y1 = mouseY * 2 - (y0 + y2) / 2;
graphics.clear();
graphics.lineStyle(1);
graphics.moveTo(x0, y0);
graphics.curveTo(x1, y1, x2, y2);
}
/*--------------------------------------------*/
/**
* Embed
*/
public function embedAsset():void {
var img:Bitmap = new pic();
addChild(img);
}
/*--------------------------------------------*/
/**
* loader
*/
public function loader():void {
var loader:Loader = new Loader();
addChild(loader);
loader.load(new URLRequest("DC1.jpg"));
}
/*--------------------------------------------*/
/*-------common*/
public function getAFromB(x1:Number, x2:Number, y1:Number,y2:Number):Number {
return Math.sqrt((x1 - x2) *(x1 - x2) + (y1 - y2) *(y1 - y2));
}
public function getNewBall(_ball:Ball, length:Number) {
}
/**
* onSpringHandler
*/
public function onDrawLineHandler(event:Event):void {
onDrawLine(fieldx, fieldy, ball.x, ball.y);
}
/**
* draw line
*/
public function onDrawLine(x1:Number, y1:Number, x2:Number,y2:Number):void {
graphics.clear();
graphics.lineStyle(1);
graphics.moveTo(x1, y1);
graphics.lineTo(x2, y2);
}
/*-------common*/
}
}
相关文章推荐
- 《Flash ActionScript 3.0 动画高级教程》
- Flash ActionScript 3.0 动画高级教程 (高清PDF中文版下载)
- Flash ActionScript 3.0 动画教程 (高清PDF中文版下载)
- <<Flash.ActionScript.3.0动画高级教程>>
- 一本好书 Flash ActionScript 3.0高级动画教程
- Flash.ActionScript.3.0动画教程_code3
- Flash.ActionScript.3.0动画教程_code1
- flash actionscript 3.0 动画教程:函数之形式参数和实际参数
- 积少成多Flash ActionScript 3.0(5) - 实例之闹钟(自定义事件, 画图, 动画)
- Flash ActionScript 3.0的Socket连接的策略文件
- flash actionscript 3.0 publish h264 stream
- 积少成多Flash ActionScript 3.0(7) - 交互之鼠标事件和键盘事件
- flash actionscript 3.0 publish h264 stream
- Flash CS4中"将动画复制为ActionScript"使用初探
- flash actionscript 3.0 发布H264的视频流
- 积少成多Flash ActionScript 3.0(6) - 绘图之图形和转换
- 积少成多Flash ActionScript 3.0(2) - 基础之包、类、包外类、命名空间、属性、方法、接口和继承
- 积少成多Flash ActionScript 3.0(1) - 基础之数据类型、操作符和流程控制语句
- 【转载】战速决Flash ActionScript 3.0 - 以文本形式、XML形式和JSON形式与ASP.NET通信续