实例介绍
【实例截图】flash切水果
【核心代码】flash切水果
package {
import flash.events.*;
import flash.display.*;
import flash.filters.BitmapFilter;
import flash.filters.BlurFilter;
import flash.filters.GlowFilter;
import flash.geom.ColorTransform;
import flash.text.*;
public class Main extends Sprite {
private var info:TextField
private var score:int = 0
private var lost:int = 0
private var time:int = 0
private var particles:Array
private var rubbishs:Array
private var lines:Array
private var cutlayer:Shape
private var cutBmdLayer:BitmapData
private var cutlayerFilter:BitmapFilter
private var cutlayerCT:ColorTransform
private var flayer:Shape
private var fBmdLayer:BitmapData
private var flayerFilter:BitmapFilter
private var flayerCT:ColorTransform
private var lastX:Number
private var lastY:Number
public function Main():void {
this.particles = [];
this.rubbishs = [];
this.lines = [];
this.cutlayer = new Shape();
this.flayer = new Shape();
super();
Wonderfl.capture(stage);
this.info = new TextField();
this.info.autoSize = TextFieldAutoSize.LEFT;
this.info.multiline = true;
this.fBmdLayer = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0);
addChild(new Bitmap(this.fBmdLayer));
this.flayerFilter = new BlurFilter();
this.flayerCT = new ColorTransform(1, 1, 1, 0.5);
this.cutBmdLayer = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0);
var _local1:Bitmap = new Bitmap(this.cutBmdLayer);
addChild(_local1);
addChild(this.info);
_local1.filters = [new GlowFilter(0xFF0000, 1, 16, 16, 2, 3, false, false)];
this.cutlayerFilter = new BlurFilter(2, 2, 3);
this.cutlayerCT = new ColorTransform(1, 1, 1, 0);
stage.addEventListener(MouseEvent.MOUSE_DOWN, this.onMD);
addEventListener(Event.ENTER_FRAME, this.update);
_scene = new Sprite();
this.addChild(_scene);
_scene.filters = [new GlowFilter(0x00CCFF, 1, 10, 10, 2, 1, false, false)];
stage.addEventListener(MouseEvent.MOUSE_DOWN, downHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, upHandler);
this.addEventListener(Event.ENTER_FRAME, enterFrame);
}
private function onMD(_arg1:MouseEvent):void {
this.lastX = mouseX;
this.lastY = mouseY;
stage.addEventListener(MouseEvent.MOUSE_MOVE, this.onMM);
stage.addEventListener(MouseEvent.MOUSE_UP, this.onMU);
}
private function onMU(_arg1:MouseEvent):void {
stage.removeEventListener(MouseEvent.MOUSE_MOVE, this.onMM);
stage.removeEventListener(MouseEvent.MOUSE_UP, this.onMU);
}
private function onMM(_arg1:MouseEvent):void {
var _local2:Line1 = new Line1();
_local2.x1 = this.lastX;
_local2.y1 = this.lastY;
this.lastX = mouseX;
this.lastY = mouseY;
_local2.x2 = this.lastX;
_local2.y2 = this.lastY;
this.lines.push(_local2);
}
private function update(_arg1:Event):void {
var _local4:Particle;
var _local5:Line1;
var _local6:int;
var _local7:Object;
var _local8:Particle;
var _local2:Graphics = this.flayer.graphics;
_local2.clear();
var _local3:int = (this.particles.length - 1);
while (_local3 >= 0) {
_local4 = this.particles[_local3];
_local4.update(_local2);
if (_local4.y > stage.stageHeight) {
if (_local4.state == 0) {
this.lost ;
}
;
this.particles.splice(_local3, 1);
}
;
_local3--;
}
;
_local3 = (this.rubbishs.length - 1);
while (_local3 >= 0) {
_local4 = this.rubbishs[_local3];
_local4.update(_local2);
if (_local4.y > stage.stageHeight) {
this.rubbishs.splice(_local3, 1);
}
;
_local3--;
}
;
this.cutlayer.graphics.clear();
_local3 = (this.lines.length - 1);
while (_local3 >= 0) {
_local5 = this.lines[_local3];
if (_local5.state == 0) {
_local6 = (this.particles.length - 1);
while (_local6 >= 0) {
_local4 = this.particles[_local6];
_local7 = this.intersection(_local5.x1, _local5.y1, _local5.x2, _local5.y2, _local4.x, _local4.y, _local4.r);
if ((((_local4.state == 0)) && (!((_local7 == null))))) {
_local4.state = 1;
_local4.cut(_local7.x1, _local7.y1, _local7.x2, _local7.y2);
_local8 = new Particle();
_local8.x = _local4.x;
_local8.y = _local4.y;
_local8.vx = _local4.vx;
_local8.vy = _local4.vy;
_local8.r = _local4.r;
_local8.av = _local4.av;
_local8.lineColor = _local4.lineColor;
_local8.color = _local4.color;
_local8.state = _local4.state;
_local8.cut(_local7.x2, _local7.y2, _local7.x1, _local7.y1);
this.particles.push(_local8);
this.score ;
this.rubbish(_local4.x, _local4.y, _local4.color);
}
;
_local6--;
}
;
}
;
_local5.state ;
if (_local5.state > 5) {
this.lines.splice(_local3, 1);
}
;
this.cutlayer.graphics.lineStyle((_local3 / 5), 0, 1, true, "none", "round", "round", 1);
this.cutlayer.graphics.moveTo(_local5.x1, _local5.y1);
this.cutlayer.graphics.lineTo(_local5.x2, _local5.y2);
_local3--;
}
;
this.cutBmdLayer.colorTransform(this.cutBmdLayer.rect, this.cutlayerCT);
this.cutBmdLayer.draw(this.cutlayer);
this.fBmdLayer.colorTransform(this.fBmdLayer.rect, this.flayerCT);
this.fBmdLayer.applyFilter(this.fBmdLayer, this.fBmdLayer.rect, this.fBmdLayer.rect.topLeft, this.flayerFilter);
this.fBmdLayer.draw(this.flayer);
this.info.text = ((((("lost:" this.lost) " score:") this.score) " time:") int((this.time / stage.frameRate)));
this.time ;
if (Math.random() < Math.atan((0.02 (this.time / 100000)))) {
this.addFruit();
}
;
}
private function addFruit():void {
var _local1:Particle = new Particle();
_local1.x = (stage.stageWidth * (0.3 (0.4 * Math.random())));
_local1.y = stage.stageHeight;
_local1.vx = (5 * (Math.random() - 0.5));
_local1.vy = -((20 (20 * Math.random())));
_local1.r = (15 (25 * Math.random()));
_local1.a = ((Math.PI * 2) * Math.random());
_local1.av = (0.1 * (Math.random() - 0.5));
this.particles.push(_local1);
}
private function rubbish(_arg1:Number, _arg2:Number, _arg3:uint):void {
var _local5:Particle;
var _local6:Number;
var _local4:int = (100 * Math.random());
while (_local4-- > 0) {
_local5 = new Particle();
_local5.color = _arg3;
_local5.lineColor = _arg3;
_local5.x = _arg1;
_local5.y = _arg2;
_local5.r = (0 (1 * Math.random()));
_local5.a = ((Math.PI * 2) * Math.random());
_local5.av = (0.1 * (Math.random() - 0.5));
_local6 = (10 * Math.random());
_local5.vx = (_local6 * Math.cos(_local5.a));
_local5.vy = (_local6 * Math.sin(_local5.a));
this.rubbishs.push(_local5);
}
}
private function intersection(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Object {
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Object;
var _local8:Number = (((_arg3 - _arg1) * (_arg3 - _arg1)) ((_arg4 - _arg2) * (_arg4 - _arg2)));
var _local9:Number = (2 * (((_arg3 - _arg1) * (_arg1 - _arg5)) ((_arg4 - _arg2) * (_arg2 - _arg6))));
var _local10:Number = ((((((_arg5 * _arg5) (_arg6 * _arg6)) (_arg1 * _arg1)) (_arg2 * _arg2)) - (2 * ((_arg5 * _arg1) (_arg6 * _arg2)))) - (_arg7 * _arg7));
var _local11:Number = ((_local9 * _local9) - ((4 * _local8) * _local10));
if (_local11 > 0) {
_local12 = Math.sqrt(_local11);
_local13 = (((-(_local9) _local12) / 2) / _local8);
_local14 = (((-(_local9) - _local12) / 2) / _local8);
_local15 = (_arg1 ((_arg3 - _arg1) * _local13));
_local16 = (_arg2 ((_arg4 - _arg2) * _local13));
_local17 = (_arg1 ((_arg3 - _arg1) * _local14));
_local18 = (_arg2 ((_arg4 - _arg2) * _local14));
_local19 = {x1:_local15, y1:_local16, x2:_local17, y2:_local18};
if ((((_local13 > 0)) && ((_local13 < 1)))) {
return (_local19);
}
;
if ((((_local14 > 0)) && ((_local14 < 1)))) {
return (_local19);
}
;
}
;
return (null);
}
private var _cacheX:int;
private var _cacheY:int;
private var _isDown:Boolean;
private var _scene:Sprite;
private function downHandler(e:MouseEvent):void {
_cacheX = mouseX;
_cacheY = mouseY;
_isDown = true;
}
private function upHandler(e:MouseEvent):void {
_isDown = false;
}
private function enterFrame(e:Event):void {
for each (var l:Line in Line.sets) {
l.update();
}
updateLine();
}
private function updateLine():void {
if (!_isDown) return;
var line:Line = new Line(_cacheX, _cacheY, mouseX, mouseY);
_scene.addChild(line);
_cacheX = mouseX;
_cacheY = mouseY;
}
}
}//package
import flash.display.*;
class Line1 {
public var x1:Number
public var y1:Number
public var x2:Number
public var y2:Number
public var state:int = 0
public function Line1() {
}
public function get length():Number {
return (Math.sqrt((((this.x2 - this.x1) * (this.x2 - this.x1)) ((this.y2 - this.y1) * (this.y2 - this.y1)))));
}
}
import flash.display.Sprite;
class Line extends Sprite {
static public var sets:Array = [];
public var sX:int;
public var sY:int;
public var eX:int;
public var eY:int;
public var linesize:Number;
public var state:int = 0
public function Line($sX:int, $sY:int, $eX:int, $eY:int, $linesize:Number = 8) {
sets.push(this);
sX = $sX;
sY = $sY;
eX = $eX;
eY = $eY;
linesize = $linesize;
draw();
}
private function draw():void {
graphics.clear();
graphics.lineStyle(linesize, 0xFFFFFF);
graphics.moveTo(sX, sY);
graphics.lineTo(eX, eY);
}
public function update():void {
draw();
linesize -= 1;
if (linesize < 1) {
clear();
}
}
private function clear() {
graphics.clear();
for (var i:String in sets) {
var l:Line = sets[i] as Line;
if (l == this) {
sets.splice(i, 1);
parent.removeChild(this);
}
}
}
}
class Particle {
public var x:Number
public var y:Number
public var g:Number = 0.5
public var vx:Number
public var vy:Number
public var friction:Number = 0.95
public var r:Number
public var color:uint
public var state:int = 0
private var a1:Number
private var a2:Number
public var av:Number
public var a:Number = 0
public var lineColor:uint
public function Particle() {
this.color = 0xFFFFFF * Math.random();
lineColor = 0xFFFFFF * Math.random();
super();
}
public function update(_arg1:Graphics):void {
this.vx = (this.vx * this.friction);
this.x = (this.x this.vx);
this.vy = (this.vy this.g);
this.vy = (this.vy * this.friction);
this.y = (this.y this.vy);
this.a = (this.a this.av);
_arg1.beginFill(this.color);
//_arg1.lineStyle(3, this.lineColor, 1, false, "normal", CapsStyle.NONE);
if (this.state == 0) {
_arg1.moveTo((this.x (this.r * Math.cos(this.a))), (this.y (this.r * Math.sin(this.a))));
_arg1.drawCircle(this.x, this.y, this.r);
} else {
this.a1 = (this.a1 this.av);
this.a2 = (this.a2 this.av);
this.drawArc(_arg1, this.x, this.y, this.r, (((this.a2 - this.a1) * 180) / Math.PI), ((this.a1 * 180) / Math.PI));
}
//_arg1.lineStyle();
}
public function cut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void {
this.a1 = Math.atan2((_arg2 - this.y), (_arg1 - this.x));
this.a2 = Math.atan2((_arg4 - this.y), (_arg3 - this.x));
if (_arg1 > _arg3) {
this.vx = (this.vx 3);
this.av = (this.av 0.05);
} else {
this.vx = (this.vx - 3);
this.av = (this.av - 0.05);
}
}
public function drawArc(_arg1:Graphics, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number = 0):void {
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
if (_arg5 < 0) {
_arg5 = (_arg5 360);
}
;
if (_arg5 > 360) {
_arg5 = 360;
}
;
_arg5 = ((Math.PI / 180) * _arg5);
var _local7:Number = (_arg5 / 8);
var _local8:Number = (_arg4 / Math.cos((_local7 / 2)));
_arg6 = (_arg6 * (Math.PI / 180));
var _local9:Number = _arg6;
var _local14:Number = (_arg2 (Math.cos(_arg6) * _arg4));
var _local15:Number = (_arg3 (Math.sin(_arg6) * _arg4));
_arg1.moveTo(_local14, _local15);
var _local16:Number = 0;
while (_local16 < 8) {
_local9 = (_local9 _local7);
_local10 = (_arg2 (Math.cos((_local9 - (_local7 / 2))) * _local8));
_local11 = (_arg3 (Math.sin((_local9 - (_local7 / 2))) * _local8));
_local12 = (_arg2 (Math.cos(_local9) * _arg4));
_local13 = (_arg3 (Math.sin(_local9) * _arg4));
_arg1.curveTo(_local10, _local11, _local12, _local13);
_local16 ;
}
;
}
}
标签: flash
相关文章
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


支持(0) 盖楼(回复)