Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- =======================Конструкция "switch-case"=======================
- Action Script 3:
- switch(loginError.code)
- {
- case LoginError.INCORRECT_KEY:
- text = Messages.ERROR_AUTH_KEY;
- break;
- case LoginError.PROFILACTIC_WORK:
- text = Messages.SERVER_UPDATE;
- break;
- case LoginError.INTERNAL_SERVER_ERROR:
- text = Messages.ERROR_SERVER;
- }
- return null;
- Action Script 3 Byte-code Assembler:
- jump ofs00e6 //Заход в первое условие первого "case", "INCORRECT_KEY"
- ofs009f:label //Метка первого действия первого "case"
- debugline 180
- //-----Начало первого действия первого "case"-----
- getscopeobject 1
- findpropstrict Qname(PackageNamespace("ru.pragmatix.wormix.gui"),"Messages")
- getproperty Qname(PackageNamespace("ru.pragmatix.wormix.gui"),"Messages")
- getproperty Qname(PackageNamespace(""),"ERROR_AUTH_KEY")
- coerce_s
- setslot 3
- //-----Конец первого действия первого "case"-----
- debugline 181
- jump ofs014c //Джамп ведёт на выход из "switch-case"
- ofs00b5:label //Метка второго действия второго "case"
- debugline 183
- //-----Начало второго действия второго "case"-----
- getscopeobject 1
- findpropstrict Qname(PackageNamespace("ru.pragmatix.wormix.gui"),"Messages")
- getproperty Qname(PackageNamespace("ru.pragmatix.wormix.gui"),"Messages")
- getproperty Qname(PackageNamespace(""),"SERVER_UPDATE")
- coerce_s
- setslot 3
- //-----Конец второго действия второго "case"-----
- debugline 184
- jump ofs014c //Джамп ведёт на выход из "switch-case"
- ofs00cb:label //Метка третьего действия третьего "case"
- debugline 186
- //-----Начало третьего действия третьего "case"
- getscopeobject 1
- findpropstrict Qname(PackageNamespace("ru.pragmatix.wormix.gui"),"Messages")
- getproperty Qname(PackageNamespace("ru.pragmatix.wormix.gui"),"Messages")
- getproperty Qname(PackageNamespace(""),"ERROR_SERVER")
- coerce_s
- setslot 3
- //-----Конец третьего действия третьего "case"
- debugline 187
- jump ofs014c //Джамп ведёт на выход из "switch-case"
- ofs00e1:label //Метка для перехода на выход из "switch-case"
- jump ofs014c //Джамп ведёт на выход из "switch-case" (джамп метки выхода)
- ofs00e6:debugline 178 //Метка первого условия первого "case"
- //-----Назначение главного условия для "switch"-----
- getscopeobject 1
- getslot 2
- getproperty Qname(PackageNamespace(""),"code")
- setlocal_3
- //-----Конец назначения главного условия для "switch"-----
- debugline 179
- //-----Начало первого условия первого "case"-----
- findpropstrict Qname(PackageNamespace("ru.pragmatix.wormix.messages.server"),"LoginError")
- getproperty Qname(PackageNamespace("ru.pragmatix.wormix.messages.server"),"LoginError")
- getproperty Qname(PackageNamespace(""),"INCORRECT_KEY")
- getlocal_3
- //-----Конец первого условия первого "case"-----
- ifstrictne ofs0104 //Переход на условие второго "case", если первое условие не прошло
- pushshort 0 //Если условие прошло, то записывает себе ноль, помечая на какое действие надо перейти ; номер "caseTarget", для перехода на действие
- jump ofs0139 //Джамп для перехода на "lookupswitch"
- ofs0104:debugline 182 //Метка для перехода на второе условие второго "case", если первый "case" не прошёл по условию
- //-----Начало второго условия второго "case"-----
- findpropstrict Qname(PackageNamespace("ru.pragmatix.wormix.messages.server"),"LoginError")
- getproperty Qname(PackageNamespace("ru.pragmatix.wormix.messages.server"),"LoginError")
- getproperty Qname(PackageNamespace(""),"PROFILACTIC_WORK")
- getlocal_3
- //-----Конец второго условия второго "case"-----
- ifstrictne ofs0118 //Переход на условие третьего "case", если второе условие не прошло
- pushshort 1 //Номер "caseTarget", если второе условие прошло и надо перейти на второе действие второго условия
- jump ofs0139 //Джамп для перехода на "lookupswitch"
- ofs0118:debugline 185 //Метка для перехода на третье условие третьего "case", если второй "case" не прошёл по условию
- //-----Начало третьего условия третьего "case"-----
- findpropstrict Qname(PackageNamespace("ru.pragmatix.wormix.messages.server"),"LoginError")
- getproperty Qname(PackageNamespace("ru.pragmatix.wormix.messages.server"),"LoginError")
- getproperty Qname(PackageNamespace(""),"INTERNAL_SERVER_ERROR")
- getlocal_3
- //-----Конец третьего условия третьего "case"-----
- ifstrictne ofs012c //Переход на метку, если все три условия не прошли проверку
- pushshort 2 //Номер "caseTarget", если третье условие прошло и надо перейти на третье действие третьего условия
- jump ofs0139 //Джамп для перехода на "lookupswitch"
- ofs012c:pushfalse //Метка, если все три условия не подошли (а у нас нет дефолтного условия), записываем в стек "false"
- iffalse ofs0137 //Условие проверки на "false" и переход на метку, если "false"
- pushshort 3 //Номер "caseTarget", если не прошли по "iffalse" и при этом ни одно из условий не подошло (по-сути, мы на эту строчку никогда не перейдём)
- jump ofs0139 //Джамп для перехода на "lookupswitch"
- ofs0137:pushshort 3 //Если сработал переход по "iffalse", то записываем номер "caseTarget"
- ofs0139:kill 3 //Метка для перехода на "lookupswitch", перед этим убиваем третью локальную переменную (Kill getlocal_3)
- lookupswitch ofs00e1 3 ofs009f ofs00b5 ofs00cb ofs00e1 //lookupswitch defaultTarget:labelName, caseCount:null, case0Target:labelName, case1Target:labelName, ...
- ofs014c:debugline 189 //Выход из "switch-case"
- pushnull
- returnvalue
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement