flash on 2011-6-23
♥0 |
Line 90 |
Modified 2011-06-23 15:47:18 |
MIT License
archived:2017-03-20 06:50:03
ActionScript3 source code
/**
* Copyright yama3 ( http://wonderfl.net/user/yama3 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/qSFU
*/
package {
import flash.events.MouseEvent;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.Event;
import flash.filters.DropShadowFilter;
import flash.geom.Point;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
public class FlashTest extends Sprite {
private var _lines:Sprite;
private var _bd:BitmapData;
private var _bmp:Bitmap;
private var _tf:TextField;
private var _tfor:TextFormat;
public function FlashTest() {
_lines = new Sprite();
_bd = new BitmapData(stage.stageWidth, stage.stageHeight, true);
_bmp = new Bitmap(_bd);
_bmp.filters = [new DropShadowFilter()];
addChild(_lines);
addChild(_bmp);
makeText();
}
private function makeText():void
{
_tfor = new TextFormat();
_tfor.size = 190;
_tfor.font = "Arial Black";
_tfor.color = 0xffffff;
_tf = new TextField();
_tf.selectable = false;
_tf.text = "WDRFL";
_tf.autoSize = TextFieldAutoSize.LEFT;
_tf.setTextFormat(_tfor);
_tf.y = 125;
addChildAt(_tf, 0);
addEventListener(MouseEvent.CLICK, clearScreen);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function clearScreen(e:MouseEvent):void {
_bd.dispose();
}
protected function onEnterFrame(e:Event):void
{
for(var i:uint=0; i<50; i++) {
sewText(50);
}
}
private function sewText(dist:int):void {
var distance:int = dist;
var sewX:Number = Math.random() * stage.stageWidth;
var sewY:Number = Math.random() * stage.stageHeight;
var distX:Number = sewX + Math.random() * distance - (distance / 2);
var distY:Number = sewY + Math.random() * distance - (distance / 2);
if(HitTester.realHitTest(_tf, new Point(sewX, sewY)) && HitTester.realHitTest(_tf, new Point(distX, distY))) {
_lines.graphics.lineStyle(0, 0, 0.2);
_lines.graphics.moveTo(sewX, sewY);
_lines.graphics.lineTo(distX, distY);
_bd.draw(_lines);
_lines.graphics.clear();
}
}
}
}
import flash.display.BitmapData;
import flash.display.DisplayObject;
import flash.geom.Matrix;
import flash.geom.Point;
class HitTester
{
public static function realHitTest(object:DisplayObject, point:Point):Boolean
{
if(object is BitmapData) {
return (object as BitmapData).hitTest(new Point(0, 0), 0, object.globalToLocal(point));
} else {
if(!object.hitTestPoint(point.x, point.y, true)) {
return false;
} else {
var bmapData:BitmapData = new BitmapData(object.width, object.height, true, 0x00000000);
bmapData.draw(object, new Matrix());
var returnVal:Boolean = bmapData.hitTest(new Point(0, 0), 0, object.globalToLocal(point));
bmapData.dispose();
return returnVal;
}
}
}
}