Просмотр полной версии : переменная как параметр функции
Добрый день..
помогите пожауйста в следующем:
у меня написана функция
function mike (param1) {.....}
так вот, если param1 вписывать прямо ручками типа mike (5) то все работает.. а мне нужно туда вставить переменную.. с этим засада. вот такой код:
for (i=0; i<num1; i++) {
param1 = "this.kn" add i;
trace (param1); //выдает this.kn0 , то что мне надо (без кавычек, все правильно).
mike(param1); .. не работает...
а если вставлять в параметр тот самый результат трейса, все ок.
mike(this.kn0);
МОЖНО ЛИ ВСТАВЛЯТЬ ПЕРЕМЕННЫЕ КАК ПАРАМЕТР ФУНКЦИИ? и как?
for (i=0; i<num1; i++) {
mike(this["kn"+i]);
}
Спасибо огромное!! все получилось!
Проблема твоя была в том, что ты передовал строку, а не ссылку на переменную. И трейс должен был показывать значение переменной, а не путь до нее с именем.
хорошо... дальше у меня встает другая проблема
(вобще я пытаюсь со своими повехностными знаниями в AS написать 2-мерное меню с редактируемыми звне пунктами (в текстовике)( :cool: )
есть глобальная функция (взял на форуме)
_global.dClip = function(movclip, numclips, shifty) {
var clipname = movclip._name;
trace (clipname);
trace(_root[clipname]._y);
var newname = "";
for (i=1; i<=numclips; i++) {
newname = clipname+i;
trace (newname);
duplicateMovieClip(clipname, newname, this.getNextHighestDepth());
_root[newname]._y += shifty;
trace(_root[newname]._y);
shifty += 10;
}
}
потом вызываю функцию кнопкой
on (release) {
dClip(this.kn0, 3, 20);
}
трейс выдает вроде правильные значения
kn0
164.85
kn01
184.85
kn02
194.85
kn03
204.85
но новый mc создается только один (вместо 3х).. я проверял, создается только kn03... почему?.. :eek:
St. Father
18.11.2005, 16:31
_global.dClip = function (movclip, numclips, shifty)
{
for (i = 1; i <= numclips; i++)
{
duplicateMovieClip (movclip, movclip._name+i, getNextHighestDepth ());
_root[movclip._name+i]._y += shifty*i;
}
};
мож так?
да, получилось! спасибо оромное.. я дилетант, н решение с shifty*i мне показалось элегантным :-)
глядишь так общими усилиями напишем мое меню, выложу обязательно
такк-с.. теперь такая у меня морока..
исходная кнопка меню педсавляет собой мувик в котором 3 слоя (подложка, отекстовый блок (txtnaknopke), и кнопка с событием
on (release) {getURL(urla);})
дублирование кнопок меню вызывается событием:
on (release) {
for (i=1; i<3; i++) {
this["kn"+i].txtnaknopke.text = l_a(0,i);//l_a - это функция возвращает имя для кнопки из 2мерного массива или ссылку (если есть 3й параметр. она работает, все возвращает правильно...)
this["kn"+i].but.urla = l_a(0,i,0); // вот тут как раз присваивается переменной ссылка.
trace (this["kn"+i].but.urla); //возвращает все ништяк
h01.html
h02.html
h03.html
h04.html как забито в массиве.
}
}
а раньше, на предыдущей стадии, у меня на кнопке переменная была дана как this.parent.urla (то есть кнопа сама брала значение переменной с верхнего уровня и все работало), а теперь то у меня не одна кнопка, поэтому надо именно каждой копии исх. кнопы насаждать разное значение urla.. то есть сверху. и так не работает. undefined мать его... :mad:
St. Father
21.11.2005, 08:51
1. я бы не стал использовать кнопку в клипе только для ссылки (если надо - то надо, но я надобности не вижу)
2. ниченипонял что не работает? где ундеф? как ты его пытаешься взять?
ну у меня создаются мувиклипы в которых кнопки (this.kn1.but и таких несколько) потом им передается каждой разный урл (переменная urla) но в том то и дело что не передается.. когда я прописывал в этой кнопке ссылку на верхний уровень
on (release) {
getURL(this._parent.urla);
}
тогда все работало, но тогда у всех кнопок будут одинаковые урлы... а надо именно при создании дубликата ему сверху говорить что мол у тебя такая urla, а у тебя такая. вот
Можно при дублировании задавать св-во, которое будет хранить ссылку:
var someUrl = "http://...";
...duplicateMovieClip(..., ..., {$url:someUrl});
Но для кнопок, они не имеют своей временной шкалы, из обработчика
на кнопке не удастся сослаться на this.$url. Поэтому обработчики лучше всегда определять как метод:
myBut.onRelease = function(){
trace(this.$url);
}
Если ты пользуешься AS1.0, то ошибок быть не должно.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.