Actionscript: доступ к экземпляру объекта - PullRequest
0 голосов
/ 02 декабря 2009

моя проблема в том, что после создания новых видеоклипов я не знаю, как получить к ним доступ

var numOfBalls:int = 5;
var balls:Array = new Array();

import flash.utils.getDefinitionByName;
function addBall(instanceName:String) {
    var mcIName:String = "ball";
    var tMC:Class = getDefinitionByName(mcIName) as Class;
    var newMc:MovieClip = new tMC() as MovieClip;
    newMc.name = instanceName;
    trace("added " + newMc.name);
    newMc.x = randRange(10, 300);
    newMc.y = randRange(10, 300);

    addChild(newMc);

    return this.newMc;
}

function randRange(start:Number, end:Number) : Number {
    return Math.floor(start +(Math.random() * (end - start)));
}

var  i = 0;
while ( i < numOfBalls) {

    balls[i] = addBall("ball_" + i);
    i++;
    }

trace (this.balls[0]); // returnes error
trace (this.balls_0); //returnes error

Ответы [ 3 ]

0 голосов
/ 02 декабря 2009

вам нужно указать, что функция addBall возвращает

function addBall(instanceName:String):MovieClip {

и вам, возможно, придется вставить шарики в массив шариков, например

balls[i].push(addBall("ball_" + i));
0 голосов
/ 02 декабря 2009

попробуйте, я не уверен в вашей проблеме
Единственное, что я могу видеть, это индекс i, в который вы записываете имя нового MovieClip, в ActionScript3 вы не можете передать числовое значение в строку без преобразования его с помощью метода toString (), попробуйте исправить его и посмотреть, если оно работает

var numOfBalls:int = 5;
var balls:Array = new Array();

import flash.utils.getDefinitionByName;
function addBall(instanceName:String):MovieClip {
    var mcIName:String = "ball";
    var tMC:Class = getDefinitionByName(mcIName) as Class;
    var newMc:MovieClip = new tMC() as MovieClip;
    newMc.name = instanceName;
    trace("added " + newMc.name);
    newMc.x = randRange(10, 300);
    newMc.y = randRange(10, 300);
    addChild(newMc);

    return this.newMc;
}

function randRange(start:Number, end:Number) : Number {
    return Math.floor(start +(Math.random() * (end - start)));
}

var  i = 0;
while ( i < numOfBalls) {
    // convert i with toString() is requested in as3 or will return ERRORS
    balls.push(addBall("ball_" + i.toString ()));
    i++;
}

trace (MovieClip(this.balls[0]));
0 голосов
/ 02 декабря 2009
function addBall(instanceName:String):MovieClip {
    var mcIName:String = "ball";
    var tMC:Class = getDefinitionByName(mcIName) as Class;
    var newMc:MovieClip = new tMC() as MovieClip;
    newMc.name = instanceName;
    trace("added " + newMc.name);
    newMc.x = randRange(10, 300);
    newMc.y = randRange(10, 300);

    addChild(newMc);

    return newMc;
}

Это должно исправить. возвращаем набранный в MovieClip и бит исправления, вернуть newMc вместо this.newMc; newMC к этому не относится.

если у вас было this.newMc = newMC, может быть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...