Jump to content

Valor da variável em determinado momento.


chalkos

Recommended Posts

Olá. Precisava de ajuda a determinar o valor de uma variável a determinada altura do código.

Apresento-vos o código:

package 
{
    import VGame.*;
    import flash.display.*;
    import flash.events.*;
    import flash.geom.*;
    import flash.net.*;
    import flash.ui.*;
    import flash.utils.*;

    public class VGame extends Sprite
    {
        private var aonde:Array;
        private var found:String;
        private var layers:Object;
        private var resIconsFound:Bitmap;
        private var total:String;
        private var can_listen:Boolean;
        private var ae_mc:Object;
        private var allst:Boolean;
        private var to_choose:Array;
        private var resIcons:Bitmap;
        private var st_time:int;
        private var printRes:Function;
        private static var v:Number = 150;
        public static var lastgame:Object;
        private static var icons:Array;
        private static var m:Number = 60;
        private static var h:Number = 400;

        public function VGame(param1:Function = null, param2 = null)
        {
            printRes = param1;
            ae_mc = param2;
            if (icons == null)
            {
                initIcons();
            }
            init();
            return;
        }// end function

        public function added(fillLayer) : void
        {
            if (stage != null)
            {
                Def.addStageMouseListener(this);
                addEventListener(Event.REMOVED_FROM_STAGE, removed);
            }
            return;
        }// end function

        private function getVacant(flash.display:DisplayObject:Array, flash.display:DisplayObject:int, flash.display:DisplayObject:int) : Boolean
        {
            var _loc_4:int = 0;
            if (flash.display:DisplayObject[flash.display:DisplayObject][flash.display:DisplayObject] + "" != "undefined")
            {
                return false;
            }
            if (flash.display:DisplayObject > 0)
            {
                _loc_4 = flash.display:DisplayObject - 1;
                while (_loc_4 <= (flash.display:DisplayObject + 1))
                {
                    
                    if (_loc_4 >= 0 && _loc_4 < flash.display:DisplayObject.length)
                    {
                        if (flash.display:DisplayObject[_loc_4][(flash.display:DisplayObject - 1)] + "" != "undefined")
                        {
                            return false;
                        }
                    }
                    _loc_4++;
                }
            }
            if (flash.display:DisplayObject < (flash.display:DisplayObject[flash.display:DisplayObject].length - 1))
            {
                _loc_4 = flash.display:DisplayObject - 1;
                while (_loc_4 <= (flash.display:DisplayObject + 1))
                {
                    
                    if (_loc_4 >= 0 && _loc_4 < flash.display:DisplayObject.length)
                    {
                        if (flash.display:DisplayObject[_loc_4][(flash.display:DisplayObject + 1)] + "" != "undefined")
                        {
                            return false;
                        }
                    }
                    _loc_4++;
                }
            }
            if (flash.display:DisplayObject > 0)
            {
                if (flash.display:DisplayObject[(flash.display:DisplayObject - 1)][flash.display:DisplayObject] + "" != "undefined")
                {
                    return false;
                }
            }
            if (flash.display:DisplayObject < (flash.display:DisplayObject.length - 1))
            {
                if (flash.display:DisplayObject[(flash.display:DisplayObject + 1)][flash.display:DisplayObject] + "" != "undefined")
                {
                    return false;
                }
            }
            return true;
        }// end function

        private function beLost() : void
        {
            allst = true;
            return;
        }// end function

        private function mouseInsideRect(flash.display:DisplayObject:Object) : Boolean
        {
            return mouseX - layers.top.x > flash.display:DisplayObject.x && mouseX - layers.top.x < flash.display:DisplayObject.x + flash.display:DisplayObject.s && mouseY - layers.top.y > flash.display:DisplayObject.y && mouseY - layers.top.y < flash.display:DisplayObject.y + flash.display:DisplayObject.s;
        }// end function

        private function fillLayer(fillLayer:String, fillLayer:int, fillLayer:Boolean = false) : void
        {
            var _loc_4:int = 0;
            var _loc_5:int = 0;
            var _loc_10:int = 0;
            var _loc_11:Matrix = null;
            var _loc_12:Number = NaN;
            var _loc_13:Number = NaN;
            var _loc_14:Number = NaN;
            var _loc_6:int = 0;
            var _loc_7:Number = 50;
            var _loc_8:* = new Array();
            var _loc_9:int = 0;
            while (_loc_9 < h * 2 / _loc_7)
            {
                
                _loc_8.push(new Array(int(v * 2 / _loc_7)));
                _loc_9++;
            }
            if (fillLayer)
            {
                aonde = new Array(3);
                _loc_9 = 0;
                while (_loc_9 < aonde.length)
                {
                    
                    aonde[_loc_9] = {z:int(29 + 10 * _loc_9)};
                    _loc_4 = Math.random() * (h * 2 / _loc_7);
                    _loc_5 = Math.random() * (v * 2 / _loc_7);
                    while (!getVacant(_loc_8, _loc_4, _loc_5))
                    {
                        
                        _loc_4 = Math.random() * (h * 2 / _loc_7);
                        _loc_5 = Math.random() * (v * 2 / _loc_7);
                    }
                    aonde[_loc_9].x = int(_loc_4);
                    aonde[_loc_9].y = int(_loc_5);
                    _loc_8[_loc_4][_loc_5] = aonde[_loc_9].z;
                    _loc_9++;
                }
                aonde.push({z:0, x:_loc_4, y:_loc_5});
            }
            _loc_9 = 0;
            while (_loc_9 < fillLayer)
            {
                
                _loc_10 = int(Math.random() * (icons.length - 1));
                while (to_choose.indexOf(_loc_10) != -1)
                {
                    
                    _loc_10++;
                    if (_loc_10 >= (icons.length - 1))
                    {
                        _loc_10 = 0;
                    }
                }
                _loc_11 = new Matrix();
                _loc_12 = 0.2 + Math.random() * 0.5;
                if (fillLayer)
                {
                    if (aonde[_loc_6].z == _loc_9)
                    {
                        while (_loc_12 < 0.3)
                        {
                            
                            _loc_12 = 0.2 + Math.random() * 0.5;
                        }
                        _loc_10 = to_choose[_loc_6];
                        _loc_4 = aonde[_loc_6].x;
                        _loc_5 = aonde[_loc_6].y;
                    }
                    else
                    {
                        _loc_4 = Math.random() * (h * 2 / _loc_7);
                        _loc_5 = Math.random() * (v * 2 / _loc_7);
                        while (_loc_8[_loc_4][_loc_5] + "" != "undefined")
                        {
                            
                            _loc_4 = Math.random() * (h * 2 / _loc_7);
                            _loc_5 = Math.random() * (v * 2 / _loc_7);
                        }
                        _loc_8[_loc_4][_loc_5] = _loc_9;
                    }
                    _loc_13 = _loc_4 * _loc_7 + m + (Math.random() - 0.5) * (_loc_7 / 2);
                    _loc_14 = _loc_5 * _loc_7 + m + (Math.random() - 0.5) * (_loc_7 / 2);
                    _loc_11.scale(_loc_12, _loc_12);
                    _loc_11.translate(_loc_13, _loc_14);
                    if (aonde[_loc_6].z == _loc_9)
                    {
                        aonde[_loc_6].x = int(_loc_13 - icons[_loc_10].width * _loc_12 / 2);
                        aonde[_loc_6].y = int(_loc_14 - icons[_loc_10].width * _loc_12 / 2);
                        aonde[_loc_6].s = int(icons[_loc_10].width * _loc_12);
                        _loc_6++;
                        layers["mira"].bitmapData.draw(icons[_loc_10], _loc_11, new ColorTransform(0.5, 0.5, 0.5));
                    }
                    else
                    {
                        layers["mira"].bitmapData.draw(icons[_loc_10], _loc_11);
                    }
                }
                else
                {
                    _loc_4 = Math.random() * (h * 2);
                    _loc_5 = Math.random() * (v * 2);
                    _loc_11.scale(_loc_12, _loc_12);
                    _loc_11.translate(_loc_4 + m, _loc_5 + m);
                }
                layers[fillLayer].bitmapData.draw(icons[_loc_10], _loc_11);
                _loc_9++;
            }
            if (fillLayer)
            {
                _loc_9 = 0;
                while (_loc_9 < (aonde.length - 1))
                {
                    
                    _loc_9++;
                }
            }
            return;
        }// end function

        private function completeGame(fillLayer = null) : void
        {
            var _loc_3:String = null;
            var _loc_4:URLVariables = null;
            var _loc_5:* = undefined;
            var _loc_6:Array = null;
            var _loc_2:* = new Date().valueOf();
            if (!allst && _loc_2 - st_time < 20000 && _loc_2 > st_time + 1500 || fillLayer != null)
            {
                _loc_3 = _loc_2 - st_time + "";
                Def.lastgame = {res:_loc_3};
                _loc_4 = new URLVariables();
                for (_loc_5 in Def.params)
                {
                    
                    _loc_4[_loc_5] = Def.params[_loc_5];
                }
                new Request("/get-time", _loc_4, {complete:getVoucher});
                VOverall.draw(new MovieClip());
            }
            else
            {
                _loc_6 = ((_loc_2 - int(st_time)) / 1000).toString().split(".");
                Def.err = {desc:"Tenta outra vez!", tit:"Demoraste " + _loc_6[0] + "," + _loc_6[1] + " segundos.", ret:Def.playGame};
                Vassets.err.init();
                VOverall.draw(Vassets.err);
            }
            return;
        }// end function

        public function init() : void
        {
            total = "nada";
            to_choose = generateResult();
            initLayers();
            setTimeout(createResIcons, 700);
            setTimeout(fillLayer, 1300, "bot", 80);
            setTimeout(fillLayer, 1800, "mid", 80);
            setTimeout(fillLayer, 2300, "top", 50, true);
            can_listen = true;
            var _loc_1:int = 0;
            Vassets.countdown.y = 0;
            Vassets.countdown.x = _loc_1;
            addChild(Vassets.countdown);
            Vassets.countdown.init(startGame);
            return;
        }// end function

        public function removed(fillLayer) : void
        {
            var _loc_2:* = undefined;
            Def.delStageMouseListener(this);
            removeEventListener(Event.REMOVED_FROM_STAGE, removed);
            for each (_loc_2 in layers)
            {
                
                _loc_2.bitmapData.dispose();
            }
            Diadia.delChildren(this);
            return;
        }// end function

        public function gotVoucher(fillLayer:String) : void
        {
            VOverall.remove();
            var _loc_2:* = fillLayer.split(",");
            Def.lastgame.id = _loc_2[0];
            Def.lastgame.voucher = _loc_2[1];
            setTimeout(Address.setA, 500, "jogo/win");
            return;
        }// end function

        private function makeTime() : int
        {
            return new Date().valueOf();
        }// end function

        public function clearImpedance() : void
        {
            Mouse.show();
            can_listen = true;
            return;
        }// end function

        private function initIcons() : void
        {
            var _loc_3:* = undefined;
            icons = new Array();
            var _loc_1:int = 0;
            while (_loc_1 < 29)
            {
                
                _loc_3 = new Vassets.icons.constructor();
                _loc_3.init(_loc_1, null);
                icons.push(_loc_3);
                _loc_1++;
            }
            var _loc_2:* = new Vassets.icons.constructor();
            _loc_2.red.gotoAndStop("vod");
            icons.push(_loc_2);
            return;
        }// end function

        private function initLayers() : void
        {
            var _loc_2:* = undefined;
            var _loc_3:BitmapData = null;
            var _loc_1:Array = ["bot", "mid", "top", "mira"];
            layers = new Object();
            for each (_loc_2 in _loc_1)
            {
                
                _loc_3 = new BitmapData(int((h + m) * 2), int((v + m) * 2), true, 0);
                layers[_loc_2] = new Bitmap(_loc_3);
                layers[_loc_2].x = -h - m;
                layers[_loc_2].y = -v - m;
            }
            return;
        }// end function

        public function stageMouseEvent(fillLayer) : void
        {
            var _loc_2:Boolean = false;
            var _loc_3:int = 0;
            var _loc_4:int = 0;
            var _loc_5:Rectangle = null;
            var _loc_6:Point = null;
            var _loc_7:Rectangle = null;
            var _loc_8:Point = null;
            var _loc_9:Array = null;
            if (can_listen && fillLayer.type == MouseEvent.MOUSE_DOWN && parent != null)
            {
                can_listen = false;
                Mouse.hide();
                _loc_3 = 0;
                while (_loc_3 < (aonde.length - 1) && !_loc_2)
                {
                    
                    if (aonde[_loc_3] != 0)
                    {
                        if (mouseInsideRect(aonde[_loc_3]))
                        {
                            _loc_2 = true;
                            _loc_4 = 3;
                            _loc_5 = new Rectangle(aonde[_loc_3].x - _loc_4, aonde[_loc_3].y - _loc_4, aonde[_loc_3].s + _loc_4 * 2, aonde[_loc_3].s + _loc_4 * 2);
                            _loc_6 = new Point(aonde[_loc_3].x - _loc_4, aonde[_loc_3].y - _loc_4);
                            layers["top"].bitmapData.copyPixels(layers["mira"].bitmapData, _loc_5, _loc_6);
                            _loc_7 = new Rectangle(_loc_3 * 42, 0, 42, 42);
                            _loc_8 = new Point(_loc_3 * 42, 0);
                            resIcons.bitmapData.copyPixels(resIconsFound.bitmapData, _loc_7, _loc_8);
                            _loc_9 = ["um", "dois", "tres"];
                            found = _loc_9[(_loc_9.indexOf(found) + 1)];
                            if (found == "tres")
                            {
                                completeGame();
                                Mouse.show();
                            }
                            aonde[_loc_3] = 0;
                            setTimeout(clearImpedance, 500);
                        }
                    }
                    _loc_3++;
                }
                if (!_loc_2)
                {
                    setTimeout(clearImpedance, 250);
                }
            }
            return;
        }// end function

        private function getVoucher(fillLayer:String) : void
        {
            var _loc_3:* = undefined;
            var _loc_2:* = new URLVariables();
            for (_loc_3 in Def.params)
            {
                
                _loc_2[_loc_3] = Def.params[_loc_3];
            }
            _loc_2["time"] = Def.lastgame.res;
            _loc_2["secret"] = SHA1.encrypt(fillLayer + "-" + Def.lastgame.res);
            new Request("/get-voucher", _loc_2, {complete:gotVoucher});
            return;
        }// end function

        private function generateResult() : Array
        {
            var _loc_4:int = 0;
            var _loc_1:* = new Array();
            var _loc_2:* = Math.floor(Math.random() * 3 - 1e-005);
            var _loc_3:int = 0;
            while (_loc_3 < 3)
            {
                
                _loc_4 = _loc_3 != _loc_2 ? (int(Math.random() * icons.length)) : ((icons.length - 1));
                while (_loc_1.indexOf(_loc_4) != -1)
                {
                    
                    _loc_4 = int(Math.random() * icons.length);
                }
                _loc_1.push(_loc_4);
                _loc_3++;
            }
            return _loc_1;
        }// end function

        public function startGame() : void
        {
            var _loc_2:* = undefined;
            added(null);
            var _loc_1:Array = ["bot", "mid", "top"];
            for each (_loc_2 in _loc_1)
            {
                
                if (_loc_2 != "mira")
                {
                    addChild(layers[_loc_2]);
                }
            }
            found = "zero";
            allst = false;
            st_time = new Date().valueOf();
            setTimeout(beLost, 20000);
            return;
        }// end function

        private function createResIcons() : void
        {
            var _loc_2:Matrix = null;
            resIcons = new Bitmap(new BitmapData(130, 42, true, 0));
            var _loc_3:* = h + m - 160;
            resIcons.x = h + m - 160;
            ae_mc.x = _loc_3;
            var _loc_3:* = -v - m - 40;
            resIcons.y = -v - m - 40;
            ae_mc.y = _loc_3;
            addChild(resIcons);
            addChild(ae_mc);
            resIconsFound = new Bitmap(new BitmapData(130, 42, true, 0));
            var _loc_1:int = 0;
            while (_loc_1 < 3)
            {
                
                _loc_2 = new Matrix();
                _loc_2.scale(38 / icons[0].width, 38 / icons[0].width);
                _loc_2.translate(_loc_1 * 42 + 19, 21);
                resIcons.bitmapData.draw(icons[to_choose[_loc_1]], _loc_2);
                resIconsFound.bitmapData.draw(icons[to_choose[_loc_1]], _loc_2, new ColorTransform(0.5, 0.5, 0.5));
                _loc_1++;
            }
            return;
        }// end function

    }
}

A dúvida principal:

na função getVoucher(fillLayer:String) gostria de saber como é gerado o fillLayer e qual é o seu valor nesta linha (que provavelmente nao será constante):

_loc_2["secret"] = SHA1.encrypt(fillLayer + "-" + Def.lastgame.res);

Não vale a pena tentar correr o código para fazer debug, pois dá erros (pelo menos em projectos AS 3.0) (pois foi "descompilado").

Outras dúvidas (sim, eu tentei descobrir esse valor e outros. este foi o unico que ainda nao consegui descobrir):

na função completeGame(fillLayer = null)

na linha

new Request("/get-time", _loc_4, {complete:getVoucher});

o que quer dizer o complete ?

e como vai funcionar o getVoucher, uma vez que não tem () nem argumentos da função?

e a função fillLayer(fillLayer:String, fillLayer:int, fillLayer:Boolean = false)

é a que me para mim é mais confusa. Recebe 3 argumentos, mas eu não vejo em lugar nenhum a invocação da função sequer (muito menos com esses argumentos todos).

Será que as varáveis fillLayer que ha ao longo da script são por vezes uma função disfarçada?

e como é que fica o filllayer no fim dessa função?

E é possível as variáveis terem os nomes iguais (a compilar dá erro, mas pode ser algum polimorfismo que desconheça... [e que o compilador desconheça...]) ?

Acho que é tudo...

Desde já obrigado  😕

Link to comment
Share on other sites

Tentando responder as tuas questões...

"A dúvida principal:

na função getVoucher(fillLayer:String) gostria de saber como é gerado o fillLayer e qual é o seu valor nesta linha (que provavelmente nao será constante):"

fillLayer como podes ver é uma string passada por parâmetro quando é chamada a função.

O "complete" é o evento complete do Request, quando este termina executa o que está lá dentro, no teu caso a função "getVoucher"

Quanto à questão dos nomes...

Parece que utilizas-te um programa decompiler para extrair o source, por vezes, nem sempre temos a solução que procuramos recorrendo a este tipo de software...

Não vai ser fácil conseguires reaproveitar este source... Mas nada melhor que tentar para aprender 😉

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.