PDA

Просмотр полной версии : Fscommand и функция


юля_программист
18.03.2014, 10:45
Здравствуйте!
Есть много элементов, при клике на какой либо через fscommand передается ассоциация с ним,и дальше обрабатывается. У меня очень много элементов и каждый раз писать

клип.onPress=function(){
fscommand("команда")
}

мне не очень хочется, делаю через функцию и класс. Но сталкиваюсь с проблемой при клике fscommand не подхватывает мое значение((Есть ли способ написать какую либо функцию, что не писать столько кода для каждого элемента, а создать функцию и менять только два параметра?
Это то что я написала, может быть вы предложите реализацию лучше)
function ClickElement(mc:MovieClip,command){
mc.onPress=function(command){
fscommand(command)
}
}

alexcon314
18.03.2014, 11:32
command по-любому нужно где-то прописывать, этого не избежать. Можно немного автоматизировать этот процесс, формализовав текст команды. Например, пусть будет каждая команда - это строка "comm_N", где N - грубо говоря номер команды. Точно так же можно формализовать имена клипов - "clip_N". Тогда можно назначить каждому клипу свою команду и обработчик onPress, пробежав по ним циклом:

for(var i = 0; i< 100; i++){
this["clip_" + i].command = "comm_" +i;
this["clip_" + i].onPress = ClickElement;
}

function ClickElement(){
var command = this.command;
fscommand(command);
}

Но для этого нужно подчинить имена команд и клипов выбранному правилу формализации. То, что хочется вам, передавать параметры в оnPress, нельзя. Но в этом обработчике мы можем обратиться к клипу, на котором была нажата мышка, как this. Т.е. роль такого параметра будет играть свойство command в каждом клипе, индивидуальное для каждого клипа и которое нужно предварительно задать, вписав туда текст команды. А в обработчике onPress можно просто вынуть значение этого свойства var command = this.command; и отдать в fscommand.
Еще о this. В цикле, где перебираются клипы, this должен указывать на контейнер, в котором находятся клипы clip1, clip2 и т.д. Например, если они все лежат на сцене, то this - это _root. Если клипы заключены в другой клип, то this - это ссылка на это клип-контейнер.