Нужна помощь с преобразованием Flash AS2 в AS3, возникли серьезные проблемы - PullRequest
1 голос
/ 03 мая 2010

У меня есть проект, мне нужно обновить форму AS2 до AS3, поскольку мне нужны некоторые новые функции, доступные для вертикального центрирования текста.

Мой текущий код AS2 на временной шкале выглядит следующим образом.

var dataField =  _root.dataField;
var dataType =  _root.dataType;
var dataPage =  _root.dataPage;
var dataVar =  _root.dataVar;
_root.mc.onRelease = function() {
    getURL("index.php?page="+dataPage+"&num="+dataNum+"&"+dataType+"="+dataVar, "_self");
};

И мой внешний файл AS выглядит следующим образом.

import mx.transitions.Tween;

/**
 *
 *  StandardKey is attached to a movieclip in the library.
 *  It handles the basic button behavior of the keyboard keys.
 *  When each button is placed on the stage, it's instance name
 *  will be the unique ID of the key.
 *
 */
class StandardKey extends MovieClip {


    ///////////////////////////////////////

    //Stage Elements    
    var highlight:MovieClip;
    //End Stage Elements
    var highlightTween:Tween;

    function StandardKey(Void) {
                //Repaint the key with 0 alpha
        highlight._alpha = 0;
    }


    function onPress(Void):Void {

        //Do the highlight animation
        highlightTween.stop();
        highlightTween = new Tween(highlight, "_alpha", mx.transitions.easing.Regular.easeInOut, 100, 0, 10, false);
    }

}

Вот моя попытка переместить временную шкалу и внешний AS2 в AS3

Временная шкала у меня теперь есть:

var dataField =  this.dataField;
var dataType =  this.dataType;
var dataPage =  this.dataPage;
var dataVar =  this.dataVar;
var dataNum =  this.dataNum;
_root.mc.onRelease = function() {
navigateToURL(new URLRequest("index.php?page="+dataPage+"&num="+dataNum+"&"+dataType+"="+dataVar, "_self"));
};

Внешний AS3 у меня

package {
import fl.transitions.Tween;
import fl.transitions.easing.*;
import flash.display.MovieClip;

/**
 *
 *  StandardKey is attached to a movieclip in the library.
 *  It handles the basic button behavior of the keyboard keys.
 *  When each button is placed on the stage, it's instance name
 *  will be the unique ID of the key.
 *
 */
public class StandardKey extends MovieClip {


    ///////////////////////////////////////

    //Stage Elements    
    var highlight:MovieClip;
    //End Stage Elements
    var highlightTween:Tween;

    public function StandardKey(Void) {
                //Repaint the key with 0 alpha
        highlight._alpha = 0;
    }


    public function onPress(Void):void {

        //Do the highlight animation
        highlightTween.stop();
        highlightTween = new Tween(highlight, "_alpha", fl.transitions.easing.Regular.easeInOut, 100, 0, 10, false);
    }

}
}

В настоящее время я получаю следующие ошибки:

Сцена 1, слой «Метка», кадр 1, строка 6 1120: доступ к неопределенному свойству _root. Сцена 1, слой «Метка», кадр 1, строка 7 1137: неверное количество аргументов. Ожидается не более 1.

Если бы кто-нибудь мог помочь мне решить это, я был бы очень признателен.

С уважением Mat.

Ответы [ 2 ]

1 голос
/ 03 мая 2010

Не используйте _root, если вам абсолютно необходимо ссылаться вверх, ближайшим эквивалентом AS3 является stage.

Свойства DisplayObject больше не начинаются с подчеркивания (_alpha против alpha в вашем случае).

Вы не можете использовать onRelease, вам нужно использовать addEventListener ()

Ваш временной код мало что значит, зачем вам делать локальные переменные?

В целом, я бы порекомендовал вам прочитать Руководство по миграции Adobe .

0 голосов
/ 01 сентября 2013

изменение

_root.mc.onRelease = function() {
navigateToURL(new URLRequest("index.php?page="+dataPage+"&num="+dataNum+"&"+dataType+"="+dataVar, "_self"));
}

до

mc.addEventListener(MouseEvent.CLICK, mcClicked)
function mcClicked(e:Event) {
    navigateToURL(new URLRequest("index.php?page="+dataPage+"&num="+dataNum+"&"+dataType+"="+dataVar, "_self"));
}

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/MouseEvent.html#MouseEvent%28%29

highlight._alpha = 0; до highlight.alpha = 0;

highlightTween = new Tween(highlight, "_alpha", fl.transitions.easing.Regular.easeInOut, 100, 0, 10, false);

до

highlightTween = new Tween(highlight, "alpha", Regular.easeInOut, 100, 0, 10, false);

http://www.republicofcode.com/tutorials/flash/as3tweenclass/

...