Получить переменную из внешнего класса

Я использую внешний класс для рисования объекта в моем Flash-фильме, но мне также нужно получить некоторые переменные из класса.

Например, я хочу поместить переменную persPoints[0].x в переменную в моем основном документе с именем newvar.

Это часть внешнего класса, которую я использую

class Shape {

function set2DTo3D():Void {
        var persPoints:Array = new Array();
        for (var i:Number = 0; i < this.pointsArray.length; i++) {
            persPoints[i] = new Object();
            this.perspectief = this.scaleValue / (this.scaleValue - this.pointsArray[i].z);
            persPoints[i].x = this.pointsArray[i].x * this.perspectief;
            persPoints[i].y = this.pointsArray[i].y * this.perspectief;
        }
        this.draw(persPoints);
    }
}

И каким-то образом мне нужно будет получить эту переменную в моей функции onEnterFrame моего .fla ниже.

var kubusMC:MovieClip = this.createEmptyMovieClip("kubusMC", 0);
kubusMC._x = Stage.width/2;//plaats de mc in het midden
kubusMC._y = Stage.height/2;

var kubus:Shape = new Shape(punten, kubusMC, 300, 1, 0x222222, 85);


this.onEnterFrame = function() {


}

Но как?


person Community    schedule 16.07.2009    source источник


Ответы (1)


Единственное изменение, которое вам нужно сделать, насколько я вижу, это переместить массив persPoints из функции set2DTo3D, чтобы сделать его членом экземпляра вашего класса. Вот так:

class Shape {

    var persPoints:Array = new Array();

    function set2DTo3D():Void 
    { 
        for (var i:Number = 0; i < this.pointsArray.length; i++) 
        { 
            persPoints[i] = new Object(); 
            this.perspectief = this.scaleValue / (this.scaleValue - this.pointsArray[i].z);
            persPoints[i].x = this.pointsArray[i].x * this.perspectief; 
            persPoints[i].y = this.pointsArray[i].y * this.perspectief; 
        } 

        this.draw(persPoints); 
    } 
}

Теперь, когда persPoints доступен как член экземпляра, вы можете получить к нему доступ в своей функции onEnterFrame:

var kubusMC:MovieClip = this.createEmptyMovieClip("kubusMC", 0); kubusMC._x = Stage.width/2;//plaats de mc in het midden kubusMC._y = Stage.height/2;

var kubus:Shape = new Shape(punten, kubusMC, 300, 1, 0x222222, 85);

this.onEnterFrame = function() 
{
    var value = kubus.persPoints[0].x;

    trace("x value of kubus.persPoints[0]: " + value);
}
person Ross Henderson    schedule 16.07.2009
comment
Что я могу сказать, спасибо тысячу раз :) - person ; 16.07.2009