2012-04-11 4 views
0

У меня мало мувиклипов из библиотеки, которые будут добавлены к сцене, внутри мувиклипа есть некоторые mc, которые я хочу контролировать, вот мой сценарий.AS3 управляющий мувиклип детей

if (selectDiffText.text == "Collection 1 Easy") 
    { 
     var c1_easy:cartoonEasy = new cartoonEasy(); 
     addChild(c1_easy); 
     c1_easy.x = 412; 
     c1_easy.y = 400; 
     TweenMax.from(c1_easy, 0.5, {alpha:0, ease:Expo.easeOut}); 
    } 
    else if (selectDiffText.text == "Collection 1 Medium") 
    { 
     var c1_medium:cartoonMedium = new cartoonMedium(); 
     addChild(c1_medium); 
     c1_medium.x = 412; 
     c1_medium.y = 400; 
     TweenMax.from(c1_medium, 0.5, {alpha:0, ease:Expo.easeOut}); 
    } 
else 
    { 
     trace("ERROR!"); 
    } 

Код выше будет загружать определенный мувиклип из библиотеки, если selectDiffText изменения.

var movieList:Array = [cartoonMedium1,cartoonMedium2,cartoonMedium3,cartoonMedium4,cartoonMedium5,cartoonMedium6]; 

function getRandomMovie():MovieClip 
{ 
    var index:int = Math.floor(Math.random() * movieList.length); 
    var mcClass:Class = movieList.splice(index,1)[0]; 
    return new mcClass(); 
} 
playGame = getRandomMovie(); 
addChild(playGame); 

пусть говорят, что если c1_medium добавляется к стадии, c1_medium также случайным образом добавляют 1 из мувика из библиотеки на нем.

внутри пустяки тс, Я mouseTarget.alpha = 0; ... как я могу контролировать его с корневого уровня? c1_easy также имеет значение mouseTarget.alpha = 0.

+0

Что именно вы хотите этот код? – Jordan

+0

каждый из c1_easy и c1_medium имеет mc, называемый mouseTarget, но каждый раз, когда я просто загружал только c1_easy или c1_medium только на сцену. Я хочу контролировать альфа-значение mouseTarget. Уровень подобно этой стадии> c1_easy/c1_medium> пустяки то, что я хочу от корня/стадии контроля mouseTarget, который в пустяки, которые добавлены либо c1_easy или c1_medium – pizza0502

ответ

0

Чтобы сделать это легко, c1_easy и c1_medium должны оба расширения одного и того же класса. Например:

class c1_easy extends CartoonGenericClass{[...]} 

и

class c1_medium extends CartoonGenericClass{[...]} 

В CartoonGenericClass, вы бы иметь переменную mouseTarget. Вы делаете эту общественность с помощью геттера/сеттера:

protected var _mouseTarget:Number; 

public function get mouseTarget():Number{ 
    return _mouseTarget; 
} 

public function set mouseTarget(value:Number):void{ 
    // (should probably do some verification on "value" here) 
    _mouseTarget.alpha = value; 
} 

Это позволит получить доступ к переменным mouseTarget (обратите внимание, что нет подчеркивания) из любого объекта, который может получить доступ к любому c1_easy или c1_medium:

c1_easy.mouseTarget = 0; 
c1_medium.mouseTarget = .3; 

и т. Д. Это стандартный ООП, поэтому может быть пора взломать документ. НТН!

+0

К сожалению я не очень хорошо знаком с кодом в классах. ..достаточно, чтобы сделать его закодированным на временной шкале? Я не кодирую на шкале времени не очень хорошо ... – pizza0502

+0

Конечно, я думаю. Не тот же метод, но вы можете получить доступ к тому, что есть в любом объекте, находящемся на сцене, проходя через корневой объект. , , все экранные объекты имеют к нему доступ. Я не сделал этого некоторое время, но я думаю, что формат будет '_root.c1_whatever.mouseTarget'. Однако вы должны быть осторожны, чтобы добавить 'c1_whatever' в корневой каталог, а не какой-либо другой объект. Итак: '_root.addChild (c1_whatever)'. Все это говорит о том, что вы получите * обширную выгоду от изучения ActionScript 3.0. Попробуйте использовать FlashDevelop для начала и прочитайте учебники «Hello world», чтобы начать работу. – iND

Смежные вопросы