forked from: forked from: forked from: forked from: flash on 2009-11-18

by ohisama
♥0 | Line 101 | Modified 2013-02-03 12:01:30 | MIT License | (replaced)
play

ActionScript3 source code

/**
 * Copyright ohisama ( http://wonderfl.net/user/ohisama )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/uhX6
 */

// forked from irishoak's forked from: forked from: forked from: flash on 2009-11-18
// forked from ish_xxxx's forked from: forked from: flash on 2009-11-18
package 
{
    import flash.utils.ByteArray;
    import org.libspark.thread.EnterFrameThreadExecutor;
    import org.papervision3d.materials.MovieMaterial;
    import org.papervision3d.objects.primitives.Cylinder;
    import org.papervision3d.view.BasicView;
    import flash.display.*;
    import flash.events.*;
    import flash.net.*;
    import org.libspark.thread.Thread;
    import jp.progression.commands.*;
    import jp.progression.commands.display.*;
    import jp.progression.commands.net.*;
    import jp.progression.commands.lists.*;
    public class FlashTest extends BasicView 
    {
        public var taiga : Sprite, ball : Cylinder, m : MovieMaterial, a : Array=[], loader : Loader = new Loader, data : ByteArray;
        public function FlashTest() 
        {
            super(0, 0, true, true);
            taiga = new Sprite();
            setup();
        }
        public function setup() : void 
        {
            var imgUrl : String = "http://assets.wonderfl.net/images/related_images/e/e9/e9b6/e9b64ead20dd3d674e79ea186b29f974341b480f";
            Thread.initialize(new EnterFrameThreadExecutor);
            new DataLoadThread(dataLoaded, imgUrl).start();
        }
        protected function dataLoaded(__data : ByteArray) : void
        {
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded );
            loader.loadBytes(__data);
        }
        protected function loaded(ev : Event) : void 
        {
            taiga.addChild(Loader(LoaderInfo(ev.currentTarget).loader));
            var l : uint = 25;
            while( l-- ) 
            {
                m = new MovieMaterial(taiga );
                ball = new Cylinder(m, Math.max(40, Math.random() * 80), Math.max(300, Math.random() * 500));
                ball.autoCalcScreenCoords = true;
                ball.x = Math.random() * 1000 - Math.random() * 1000;
                ball.z = Math.random() * 1000 - Math.random() * 1000;
                a.push(
                {
                    ball : ball, offset : Math.random() * 20 - Math.random() * 20
                });
                scene.addChild(ball);
            }
            startRendering();
        }
        override protected function onRenderTick( ev : Event = null ) : void
        {
            var l : uint = a.length;
            while (l--) 
            {
                a[l].ball.rotationY += a[l].offset;
                a[l].ball.y += a[l].offset;
                if (a[l].ball.y > 1000) 
                {    
                    a[l].ball.y = -1000;    
                }
                if (a[l].ball.y < -1000) 
                {    
                    a[l].ball.y = 1000;    
                }
            }
            renderer.renderScene(scene, camera, viewport);
        }
    }
}
import org.libspark.thread.Thread;
import org.libspark.thread.threads.net.URLLoaderThread;
import org.libspark.thread.utils.SerialExecutor;
import flash.net.*;
internal class DataLoadThread extends Thread
{
    public var callback : Function, url : String, s : SerialExecutor;
    public function DataLoadThread(__callback : Function, __url : String)
    {
        super();
        callback = __callback || trace; 
        url = __url;
    }
    protected override function run() : void
    {
        s = new SerialExecutor;
        var ul : URLLoader = new URLLoader; ul.dataFormat = URLLoaderDataFormat.BINARY;
        s.addThread(new URLLoaderThread(new URLRequest(url), ul));
        s.start(); 
        s.join(); 
        next(end);
    }
    protected function end() : void
    {
        callback(URLLoaderThread(s.getThreadAt(0)).loader.data);
    }
}