Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Функция-таргетинг проблема (http://www.flasher.ru/forum/showthread.php?t=30749)

ig0r 24.04.2002 11:15

Функция-таргетинг проблема
 
Привет всем,

Пожалуйста помогите мне справиться со следующей задачей:

У меня есть файл, состоящий из одного кадра. Внем находятся клипы с кнопками, их id имеют цифровые значения. В главный timeline грузятся переменные с теми же id.

Я хочу написать функцию которая бы звалась из кнопок в клипах. Эта функция должна создать текстовое поле в клипе и загрузить текст из значения переменной, пользуясь id клипа для определения id переменной.

Написанная мной функция не работает - она делает текстовое поле в главном таймлайне и не загружает значение переменной.

Привожу код:

Код:

stop();
var va37 = "test";
function showCaption() {
    this.createTextField("mytext", 0, 10, 100, 120, 20);
    mytext.multiline = true;
    mytext.wordWrap = true;
    mytext.border = true;
    mytext.background = true;
    mytext.variable = "";
    myformat = new TextFormat();
    myformat.color = 0xff0000;
    myformat.bullet = false;
    myformat.underline = false;
    mytext.text = _root.va+(getProperty(this, _name));
    mytext.setTextFormat(myformat);
}

Заранее благодарен за помощь и внимание.

Parafly 25.04.2002 11:26

Цитата:

mytext.text = _root.va+(getProperty(this, _name));
Как минимум это - не stuff. Eval нужен.
mytext.text = eval("_root.va"+this. _name);

Во-вторых - трабл с путями. trace(this); попробуй.
Насколько мне известно - либо передавай рутовой функции ссылку на вызвавшего, либо саму функцию посели в клипы (что правильнее, потому что больше она никому не нужна).

Assuming:
внутри клипа
Код:

function showCaption() {
        this.createTextField("mytext", 0, 10, 100, 120, 20);
        mytext.text = eval("_root.va"+this._name);
}

Хотя... убей - не пойму, зачем id хранить прям в имени кнопки.

Nox Noctis 25.04.2002 13:11

Цитата:

Оригинал написал(а) Parafly
либо саму функцию посели в клипы (что правильнее, потому что больше она никому не нужна).
[MX]:
functionName.apply (thisReference, [parameter1, parameter2.....]);

functionName - имя функции
thisReference - ссыла на объект, к которому ее применяем
[parameter1, parameter2.....] - массив параметров функции

внутри самой функции везде пишем 'this' в качестве обращения к объекту

ig0r 25.04.2002 13:20

Интересно, где мы это пишем? Еще вопрос - как написать функцию, чтобы задать autoSize для текст фиелд (я подозреваю, что это не работает для createTextField)

ig0r 25.04.2002 13:28

Вот мое нынешнее состояние, работает прекрасно, хотя очень сильно подозреваю, что можно поизящнее... одна беда- autoSize не работает, когда попытался вставить текстовое поле вместо того, чтобы криэйт, чтобы потом форматировать как аutosize, это не работает...

Код:

function showCaption(mc) {
    mc.createTextField("mytext", 0, 0, 0, 100, 20);
    with (mc.mytext) {
        multiline = true;
        wordWrap = true;
        border = true;
        background = true;
        autoSize = "left";
        backgroundColor = 0xFFFFCC;
        borderColor = 0x990000;
        selectable = "false";
    }
    var myformat = new TextFormat();
    with (myformat) {
        color = 0x990000;
        font = "_sans";
        size ="15";
    }
    mc.mytext.text = _root[mc._name+"_va"];
    mc.mytext.autoSize = "left";
    mc.mytext.setTextFormat(myformat);
    trace(mc);
}


Parafly 25.04.2002 13:28

to NoxNoctis:
Эмм... Это, как я понял, макромедийцы сделали макрос на тему
Цитата:

либо передавай рутовой функции ссылку на вызвавшего
Типа
Код:

_root.myFunc(this._target);

//в руте
function myFunc(targVictim){
  with(eval(targVictim)){
    this.sometingBad=true;
  }
}

Оно?..

Nox Noctis 25.04.2002 14:42

2Parafly
наверно так и есть... просто зачем городить огород, когда все уже украдено до нас ? ;)))


Часовой пояс GMT +4, время: 07:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.