forked from: forked from: forked from: massmedian challenge
forked from forked from: forked from: massmedian challenge (diff: 128)
http://wonderfl.net/c/9FS3の「ズキュウウウン光るパンダ」の光る部分のソースを付け足してみました。 コンストラクタ以下のDo not change following codes.の部分を変更してしまいました。
♥0 |
Line 181 |
Modified 2010-12-09 12:13:12 |
MIT License
archived:2017-03-20 07:49:18
| (replaced)
ActionScript3 source code
/**
* Copyright yabuchany ( http://wonderfl.net/user/yabuchany )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/n5NH
*/
// forked from yabuchany's forked from: forked from: massmedian challenge
// forked from Inspired12's forked from: massmedian challenge
// forked from checkmate's massmedian challenge
package {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.net.*;
import flash.system.*;
import flash.system.LoaderContext;
[SWF(backgroundColor="0", frameRate="60", width="465", height="465")]
public class Begineer extends Sprite {
private static var basePath:String = "http://assets.wonderfl.net/images/related_images/";
private static var sunshinePath:String = "9/9b/9bbe/9bbec77d53bddc5e7a5f2c00abbade6bd641c549";
private static var lightPath:String = "4/40/400b/400b814a16b90c750e41bcd00890213280cd1be7";
private var loader:Loader;
private var trianglelines:TriangleLines;
private var light:Sprite;
//-------------------------------//
// Use properties as follows.
//-------------------------------//
private var _sliceList:Array;
private var i:uint = 1000;
private var k:Number = 1;
private var p:DisplayObject;
private var o:DisplayObject;
//-------------------------------//
// Change functions as follows.
//-------------------------------//
public function updateEnterFrame( e:Event ):void {
var myShape:Shape = new Shape();
addChild(myShape);
myShape.graphics.beginFill(0xcc0000);
myShape.graphics.drawRect(0, 150, 465, 165);
myShape.graphics.beginFill(0xcccccc);
myShape.graphics.drawEllipse(80, 150, 300,165);
myShape.graphics.beginFill(0x000000);
myShape.graphics.drawCircle(stage.stageWidth / 2, stage.stageHeight / 2, 80);
myShape.graphics.beginFill(0xcc0000);
myShape.graphics.drawCircle(stage.stageWidth / 2, stage.stageHeight / 2, 60);
setChildIndex(myShape, 0);
k = 0;
for each(p in _sliceList){
//p.y = Math.cos(i/20)*(k/2)+200;
//p.x = Math.sin(i/10)*(k/2)+180;
//p.scaleX = 2;
p.x = stage.stageWidth / 2;
p.y = stage.stageHeight / 2;
p.rotation = Math.cos(i/100)*(k+i);
k++;
}
i++;
}
//-------------------------------//
// Do not change following codes.
//-------------------------------//
public function Begineer(){
var ctxt :LoaderContext = new LoaderContext(true);
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener( Event.COMPLETE, onLoadComplete );
loader.load( new URLRequest("http://swf.wonderfl.net/static/assets/massmedian.png"), ctxt );
init();
setup();
}
public function onLoadComplete(e:Event):void {
var loader:Loader = LoaderInfo( e.target ).loader;
loader.contentLoaderInfo.removeEventListener( Event.COMPLETE, onLoadComplete );
var bitmapdata:BitmapData = new BitmapData( loader.width, loader.height, true, 0xFF0000 );
bitmapdata.draw( loader );
_sliceList = sliceBanner( bitmapdata, bitmapdata.width );
addEventListener( Event.ENTER_FRAME, updateEnterFrame );
}
private function sliceBanner( banner:BitmapData, length:int = 100 ):Array{
var sliceList:Array = [];
var w:int = Math.floor( banner.width/length );
var h:int = Math.floor( banner.height );
var t:int = Math.ceil( banner.width - w*length );
var mat:Matrix = new Matrix();
for( var i:int = 0; i<length; i++ ) {
var bmpd :BitmapData = new BitmapData( w, h, true, 0xFFFF00 );
mat.tx = -w*i;
bmpd.draw( banner, mat );
var part:DisplayObject = addChild( new Bitmap( bmpd ) );
part.x = w*i;
sliceList.push( part );
}
return sliceList;
}
private function init():void {
draw();
var rect:Rectangle = new Rectangle(0, 0, 465, 465);
trianglelines = new TriangleLines(rect, 0x000000);
}
private function complete(evt:Event):void {
loader.removeEventListener(Event.COMPLETE, complete);
var content:MovieClip = MovieClip(evt.target.content);
setup();
loader = null;
}
private function setup():void {
addChild(light);
addChild(trianglelines);
trianglelines.start();
}
private function draw():void {
drawSun();
drawLight();
}
private function drawSun():void {
var matrix:Matrix = new Matrix();
matrix.createGradientBox(200, 200, 0, -90, -90);
graphics.beginGradientFill(GradientType.RADIAL, [0xFFFFFF, 0xFFFFFF, 0xFFFFFF], [1, 0.3, 0], [25, 102, 231], matrix);
graphics.drawCircle(10, 10, 100);
graphics.endFill();
var shine:Loader = new Loader();
addChild(shine);
shine.alpha = 0.5;
shine.load(new URLRequest(basePath + sunshinePath), new LoaderContext(true));
}
private function drawLight():void {
light = new Sprite();
//addChild(light);
light.x = 232;
light.y = 232;
light.blendMode = BlendMode.ADD;
var _loader:Loader = new Loader();
_loader.contentLoaderInfo.addEventListener(Event.INIT, initialize, false, 0, true);
_loader.load(new URLRequest(basePath + lightPath), new LoaderContext(true));
}
private function initialize(evt:Event):void {
var content:Bitmap = Bitmap(evt.target.content);
content.x = -128*3;
content.y = -128*3;
content.scaleX = content.scaleY = 3;
content.smoothing = true;
light.addChild(content);
addEventListener(Event.ENTER_FRAME, rotate, false, 0, true);
}
private function rotate(evt:Event):void {
light.rotation += 10;
}
}
}
//////////////////////////////////////////////////
// TriangleLinesクラス
//////////////////////////////////////////////////
import flash.display.*;
import flash.events.*;
import flash.geom.*;
class TriangleLines extends Sprite {
private var rect:Rectangle;
private var canvas:BitmapData;
private static var radian:Number = Math.PI/180;
private var color:uint;
public function TriangleLines(r:Rectangle, c:uint) {
rect = r;
color = c;
init();
}
private function init():void {
canvas = new BitmapData(rect.width, rect.height, true, 0x00000000);
addChild(new Bitmap(canvas));
}
public function start():void {
drawLines();
addEventListener(Event.ENTER_FRAME, update, false, 0, true);
}
private function update(evt:Event):void {
canvas.lock();
canvas.fillRect(rect, 0x00000000);
drawLines();
canvas.unlock();
}
private function drawLines():void {
var line:Sprite = new Sprite();
drawTriangle(line.graphics);
var a:uint = 2;
var rw:uint = rect.width;
var rh:uint = rect.height;
var length:uint = rw/2*Math.sqrt(2);
for (var n:uint = 0; n < 360; n += Math.round(Math.random()*a)) {
var dx:Number = Math.sin(n*radian)*length + rw/2;
var dy:Number = Math.cos(n*radian)*length + rh/2;
var matrix:Matrix = new Matrix();
matrix.scale(5, Math.random()*length + length/2);
matrix.rotate(-n*radian);
matrix.translate(dx, dy);
canvas.draw(line, matrix, null, null, null, false);
}
line = null;
}
private function drawTriangle(g:Graphics):void {
g.beginFill(color);
g.moveTo(-0.5, 0);
g.lineTo(0.5, 0);
g.lineTo(0, -0.5);
g.lineTo(-0.5, 0);
g.endFill();
}
}
