forked from: forked from: flash on 2013-3-1

by ohisama forked from forked from: flash on 2013-3-1 (diff: 46)
♥0 | Line 132 | Modified 2013-03-01 11:53:32 | 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/erHi
 */

// forked from ohisama's forked from: flash on 2013-3-1
// forked from ohisama's flash on 2013-3-1
package
{
    import flash.display.*;
    import flash.events.*;
    import flash.net.*;
    import flash.system.*;
    import flash.utils.*;
    import com.codeazur.as3swf.*;
    import com.codeazur.as3swf.data.*;
    import com.codeazur.as3swf.tags.*;
    import com.bit101.components.*;
    public class FlashTest extends Sprite
    {
        private static const CODE : String =
            "use namespace 'flash.display';\n" +
            "use namespace 'flash.text';\n" +
            "class Movie extends Sprite\n" +
            "{\n" +
            "    public function Movie()\n" +
            "    {\n" +
            "        var i : int;\n" + 
            "        var s : int; \n" +
            "        var sign : Array = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1];\n" +
            "        var n : int;\n" +
            "        var x : int;\n" +
            "        var r : String = '';\n" +
            "        do\n" +
            "        {\n" +
            "            x = 0;\n" +
            "            n = 0;\n" +  
            "            s = 1;\n" +
            "            for (i = 1; i <= 9; i++)\n" +
            "            {\n" +
            "                if (sign[i] == 0)\n" +
            "                {\n" +
            "                    n = 10 * n + i;\n" +
            "                }\n" +
            "                else\n" +
            "                {\n" +
            "                    x += s * n;\n" +
            "                    s = sign[i];\n" +
            "                    n = i;\n" +
            "                }\n" +
            "            }\n" +
            "            x += s * n;\n" +
            "            if (x == 100)\n" +
            "            {\n" +
            "                for (i = 1; i <= 9; i++)\n" +
            "                {\n" +
            "                    if (sign[i] ==  1) r += '+';\n" +
            "                    else if (sign[i] == -1) r += '-';\n" +
            "                    r += i;\n" +
            "                }\n" +
            "                r += '=100' + String.fromCharCode(13);\n" +
            "            }\n" +
            "            i = 9;\n" +
            "            s = sign[i] + 1;\n" +
            "            while (s > 1)\n" +
            "            {\n" +
            "                sign[i] = -1;\n" +
            "                i--;\n" +
            "                s = sign[i] + 1;\n" +
            "            }\n" +
            "            sign[i] = s;\n" +
            "        } while (sign[1] < 1);\n" +
            "        var t : TextField = new TextField();\n" +
            "        t.text = r;\n" +
            "        t.autoSize = TextFieldAutoSize.LEFT;\n" +
            "        t.wordWrap = true;\n" +
            "        t.width = 150;\n" +
            "        addChild(t);\n" +
            "    }\n" +
            "}";
        private var compileStringToBytes : Function;
        private var code : Text;
        private var swf : SWF;
        private var movie : Loader;
        private var data : SWFData;
        public function FlashTest()
        {
            code = new Text(this, 5, 5, CODE);
            code.width = 250;
            code.height = 450;
            addChild(code);
            new PushButton(this, 260, 340, 'make swf', compile);
            movie = new Loader();
            movie.x = 260;
            movie.y = 10;
            addChild(movie);
            var ul : URLLoader = new URLLoader;
            ul.dataFormat = URLLoaderDataFormat.BINARY;
            ul.addEventListener(Event.COMPLETE, loadESC);
            ul.load(new URLRequest("http://assets.wonderfl.net/images/related_images/3/3d/3d72/3d721c692ee6ca816bac3cb996e82a2329c725a2"));
        }
        private function loadESC(e : Event) : void 
        {
            var ul : URLLoader = e.target as URLLoader;
            ul.removeEventListener(Event.COMPLETE, loadESC);
            var data : ByteArray = new ByteArray;
            data.writeBytes(ul.data, 42, ul.data.length - 42);
            var l : Loader = new Loader();
            l.contentLoaderInfo.addEventListener(Event.COMPLETE, completeESC);
            l.loadBytes(data, new LoaderContext(false, ApplicationDomain.currentDomain));
        }
        private function completeESC(e : Event) : void
        {
            compileStringToBytes = ApplicationDomain.currentDomain.getDefinition('ESC.compileStringToBytes') as Function;
        }
        private function compile(e : MouseEvent) : void
        {
            swf = new SWF();
            swf.version = 9;
            swf.frameSize.xmax = 1000;
            swf.frameSize.ymax = 1000;
            swf.frameRate = 30;
            swf.compressed = false;
            swf.tags.push(new TagFileAttributes());
            swf.tags.push(null);
            var tsc : TagSymbolClass = new TagSymbolClass();
            tsc.symbols.push(SWFSymbol.create(0, 'Movie'));
            swf.tags.push(tsc);
            swf.tags.push(new TagShowFrame());
            swf.tags.push(new TagEnd());
            var abc : ByteArray = compileStringToBytes(code.text, 'Movie.as');
            swf.tags[1] = TagDoABC.create(abc, '', false);
            data = new SWFData();
            swf.publish(data);
            movie.unloadAndStop();
            movie.loadBytes(data);
        }
    }
}

Forked