Как преобразовать сценарий действия 2 в сценарий действия 3? - PullRequest
0 голосов
/ 15 ноября 2011

Код
import mx.events.EventDispatcher;import Proxy;

Ниже приведено определение класса.

class XMLLoad extends EventDispatcher{
public var XML_NODE_TYPE_TEXT = 3;
public var XML_NODE_TYPE_ELEMENT = 1;
private var xmlPath:String;
private var xmlObj:Object;
private var classObj:Object;
private var data_xml:XML;
private var loadedxmldata:XML;
private var success:Boolean;

public static var LOAD_SUCCESS:String = "xmlObjCreated";
public static var LOAD_FAILED:String = "xmlObjFailed";

весь этот код относится к одному и тому же классу. Ниже приведены функции в классе выше

public function XMLLoad() {
    loadedxmldata = new XML();
    classObj = new Object();
}

public function setXMLObject(_xmlPath:String):Void {
    xmlPath = _xmlPath;
    data_xml = new XML();
    data_xml.ignoreWhite = true;
    data_xml.load(xmlPath) 
    data_xml.onLoad = Proxy.create(this, loadXml, success, data_xml);
}

public function getLoadedXML():XML {
    return loadedxmldata;
}

private function loadXml(success):Void {
    if (success) {
        loadedxmldata = data_xml
        xmlObj = XMLDocToObject(data_xml);
        var eveObj:Object = {target:this, type:LOAD_SUCCESS, xmlObj:xmlObj, nativeXMLObj:data_xml}
        dispatchEvent(eveObj)
    } else {
        var eveObj:Object = {target:this, type:LOAD_FAILED, nativeXMLObj:data_xml}
        dispatchEvent(eveObj)
    }
}

public function XMLDocToObject(oXML):Array {
    var obj = [];
    if (oXML == null) {
        return obj;
    }
    var eRoot = oXML.firstChild;
    if (eRoot != null) {
        obj = buildObject(obj, eRoot);
    }
    return obj;
}

private function buildObject(obj, eItem):Array {
    var idx, eChild;
    var oTarget;
    while (eItem != null) {
        idx = eItem.nodeName;
        if (eItem.nodeType == XML_NODE_TYPE_ELEMENT) {
            oTarget = buildObject({}, eItem.firstChild);
            for (var attrib in eItem.attributes) {
                oTarget[attrib] = eItem.attributes[attrib];
            }
            if (eItem.nodeValue != null) {
                oTarget._value = eItem.nodeValue;
            } else {
                eChild = eItem.firstChild;
                if (eChild != null) {
                    if (eChild.nodeType == XML_NODE_TYPE_TEXT) {
                        if (eChild.nodeValue != null) {
                            oTarget._value = eChild.nodeValue;
                        }
                    }
                }
            }
        if (obj[idx]._type != 'array') {
            obj[idx] = [obj[idx]];
            obj[idx]._type = "array";
            obj[idx][0] = oTarget;
        } else {
            obj[idx][obj[idx].length] = oTarget;
        }
    }

Этиявляются функциями.в классе.

Ответы [ 2 ]

2 голосов
/ 15 ноября 2011

То, что я бы порекомендовал, это взять AS2 swf.Создайте оболочку AS3, загрузите ваш as2 swf.И вы можете общаться между двумя, если вам нужно.

0 голосов
/ 15 ноября 2011

Преобразование AS2 в AS3 - задача не из легких. Между этими двумя понятиями есть несколько концептуальных различий, и хотя умный человек с хорошими знаниями может внести необходимые изменения, фактическое функционирование кода не будет таким же, они достигнут той же цели, но не одинаково .

Если вы хотите, чтобы это было сделано, вам придется сделать это самостоятельно, понять, что используют и используют 4000 анимаций, и написать свой собственный конвертер, который преобразует их по-вашему. Если вы не знаете AS3 или AS2, вставьте код здесь, и если он достаточно прост, я мог бы перевести 1 из них для вас.

...