Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   function (http://www.flasher.ru/forum/showthread.php?t=63048)

fester 15.09.2004 02:18

function
 
привет всем.
у меня проблемка.
если пишу так, все работает
Код:

//feld_1.text_.dyn_txt.autoSize = "left"; //automatische streckung des t-feldes
_root.feld_1.text_.dyn_txt.text="";  //das prototyp_text_feld_ leeren
duplicateMovieClip (_root.feld_1.text_.dyn_txt, "dyn_txt1", 0); //kopieren von prototyp_text_feld_
_root.feld_1.text_.dyn_txt1.autoSize = "left";//automatische streckung des t-feldes
_rootfeld_1.text_.dyn_txt1.text="b1b1 end"; //wert setzen
setProperty ("_root.feld_1.text_.dyn_txt1", _x, 0); //positionieren
setProperty ("_root.feld_1.text_.dyn_txt1", _y, 0); //positionieren
//_root.c_.loadMovie("projekt/1.jpg"); //ok
_root.feld_1.text_.b_.loadMovie("projekt/1.jpg"); //mit bild fuellen
//_root.a.text_.k_._yscale=_root.a.text_.b_._xscale=60;
setProperty ("_root.feld_1.text_.b_", _x, 10); //positionieren
setProperty ("_root.feld_1.text_.b_", _y, 60); //positionieren
duplicateMovieClip (_root.feld_1.text_.k_, "k_0", 1); //kopieren von prototyp_dreieck k_
setProperty ("_root.feld_1.text_.k_0", _x, 230); //positionieren
setProperty ("_root.feld_1.text_.k_0", _y, 2); //positionieren
_root.feld_1.text_.k_0.onPress = function() { //funktion zuweisen
trace("k_0 onMouseMove");
        }

а если вот так, как функция, не хочет

Код:

function fulle (){
        trace ("fulle");
//feld_1.text_.dyn_txt.autoSize = "left"; //automatische streckung des t-feldes
_root.feld_1.text_.dyn_txt.text="";  //das prototyp_text_feld_ leeren
duplicateMovieClip (_root.feld_1.text_.dyn_txt, "dyn_txt1", 0); //kopieren von prototyp_text_feld_
_root.feld_1.text_.dyn_txt1.autoSize = "left";//automatische streckung des t-feldes
_rootfeld_1.text_.dyn_txt1.text="b1b1 end"; //wert setzen
setProperty ("_root.feld_1.text_.dyn_txt1", _x, 0); //positionieren
setProperty ("_root.feld_1.text_.dyn_txt1", _y, 0); //positionieren
//_root.c_.loadMovie("projekt/1.jpg"); //ok
_root.feld_1.text_.b_.loadMovie("projekt/1.jpg"); //mit bild fuellen
//_root.a.text_.k_._yscale=_root.a.text_.b_._xscale=60;
setProperty ("_root.feld_1.text_.b_", _x, 10); //positionieren
setProperty ("_root.feld_1.text_.b_", _y, 60); //positionieren
duplicateMovieClip (_root.feld_1.text_.k_, "k_0", 1); //kopieren von prototyp_dreieck k_
setProperty ("_root.feld_1.text_.k_0", _x, 230); //positionieren
setProperty ("_root.feld_1.text_.k_0", _y, 2); //positionieren
_root.feld_1.text_.k_0.onPress = function() { //funktion zuweisen
trace("k_0 onMouseMove");
        }

} //----- end


может кто подскажет почему ? :confused: :confused: :confused: :confused:

Ріxеl 15.09.2004 09:47

может ты забыл эту функцию выполнить?

fester 15.09.2004 12:13

нет выполнилб

trace сообщение выводит...

DeliMIter 15.09.2004 13:03

Где тебя научили так нечитабельно писать код, умело сочетая команды 4-го и 7-го флэша? В коде вида
Код:

Clip = ProtoClip.duplicateMovieClip("NewName", 0);
Clip._x = 10;
Clip._y = 20;

будет намного проще искать ошибки.

fester 15.09.2004 13:33

спасибо за савет - это я по старинке так... твой вариант проще читать - согласен.

но тут дело не в коде который работает, а в том, что страным образом этот же код как составляющее функции не действует.

Код:

function test () {
  Clip = ProtoClip.duplicateMovieClip("NewName", 0);
  Clip._x = 10;
  Clip._y = 20;
  _root.dyn_txt.text="ла ла ла ла";
}

test();

у меня не работает

DeliMIter 15.09.2004 13:53

А как ты определяешь, работает он или нет?

fester 15.09.2004 14:04

ну как...

1. первых через trace вижу что функция была запущена.
2. код был построчно проверен - так что сравниваю результаты. т.е. дублируется ли мувик, передается ли в текстовую форму переменная или значение

а что? может делаю что не так?

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

... пасибо за потраченое время... может и разберемся...
да у меня одна из первых МХ версий... может там что не так...
помню что с масками и текстом был глюк... если что не путаю

DeliMIter 15.09.2004 15:33

Вроде все правильно делаешь... Лови мелочи. Адресное пространство. Кейз-сенситивность в 7-м формате и втором скрипте. Последовательность событий. Потому что код в кадре, и код в функции в этом кадре и вызовом функции в этом кадре ДОЛЖНЫ работать идентично.

fester 16.09.2004 00:33

ну сказал конечно красиво...
только я мало понял :=(

может для людей с поздним зажеганим в простой теминалогии разок, а?

Nox Noctis 16.09.2004 00:43

скажем проще: пока не понятно откуда и при каких обстоятельствах у тебя вызывается эта функция, не понятно что там может не работать.

грамматических ошибок в приведенном коде вроде нет - только стилистические :) значит ошибка где-то в другом месте.

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

fester 16.09.2004 00:53

так я же вроде все и проверил построчно... вроде все ок... на сцене ни чего не менял...
только вот несколько строк в функцию объединил. мне и самому это уж очень интересно.
позиция кода тоже не менялась....

только лишь

function lala () {

уже проверенный код;
уже проверенный код;
уже проверенный код;
уже проверенный код;

}

gason 16.09.2004 00:54

делигирование появилось в 7-ке
 
Ты внутри функции проверь, где ты запустился, выставь trace (this).
function test () {
trace (this) // кто ты, кто ты, @Децл
trace (ProtoClip) // видно-ли от туда твой мувик

Clip = ProtoClip.duplicateMovieClip("NewName", 0);
Clip._x = 10;
Clip._y = 20;
_root.dyn_txt.text="ла ла ла ла";
}

artfla$her 16.09.2004 02:57

Я ничего не имею против очепяток, но....

_rootfeld_1

? это ты только тут очепятился или в коде тоже?

fester 16.09.2004 20:56

часть уже понял
 
если так, то все супер

Код:

function test () {

trace ("function test") //выходит всегда

Clip = ProtoClip.duplicateMovieClip("NewName", 0);
Clip._x = 10;
Clip._y = 20;
_root.dyn_txt.text="ла ла ла ла";
}
test();

а вот если эту функцию вызывает другой мувик через нажатие мыши, то выходит только TRACE сообщение :=(

artfla$her 16.09.2004 23:07

Простейший вариант решения проблемы - выложить исходник.

fester 17.09.2004 11:53

вот исходник
 
еще раз коротко:
на слое //action есть новая функция fulle ()
если ее вызвать сразу после задачи функции все работает как надо.

но она должна работать, когда нажимаешь на кнопку "news", а работает только trace.вывод.

может поможете разобраться...
благодарю заранее


поеснение...

хочу выводить в зависимосни он нажания кнопки (их будет больше) содержание XML-файла. может быть только текст, текси с картинками или только картинки...

fester 17.09.2004 12:11

вот исходник
 
Вложений: 1
еще раз коротко:
на слое //action есть новая функция fulle ()
если ее вызвать сразу после задачи функции все работает как надо.

но она должна работать, когда нажимаешь на кнопку "news", а работает только trace.вывод.

может поможете разобраться...
благодарю заранее


поеснение...

хочу выводить в зависимосни он нажания кнопки (их будет больше) содержание XML-файла. может быть только текст, текси с картинками или только картинки...

важно!
файлы слишком большие для upload.
вот tree
test-
|projekt-
|1.zip //jpg
|test_17_o.zip //fla
|vik___.zip //xml

fester 17.09.2004 12:12

xml
 
Вложений: 1
xml file

fester 17.09.2004 12:13

jpg
 
Вложений: 1
jpgl file в папке

все это распоковать в другую папочку и ладушки

dimarik 17.09.2004 13:54

Папы, объясните явление:
Код:

this.createTextField("cDTF", 100, 0, 0, 120, 30);
cDTF.text = "Runtime created DTF";
//
duplicateMovieClip (cDTF, "cDFT_2", 1001); // из 4-ки
cDFT_2.text = "cDFT_2 - Duplicated DTF";
cDFT_2._x = 100;
cDFT_2._y = 100;

Теперь CTRL+ENTER, CTRL+ALT+V;
Почему нет cDFT_2 текста на экране?

Nox Noctis 17.09.2004 14:16

Цитата:

Оригинал написал(а) dimarik
Почему нет cDFT_2 текста на экране?
хмм... мне вот пока что не понятно. если создать оригинал поля заранее в таймлайне - то дублирование происходит без ошибок. а если создать динаически - то объект вроде как дублируется а его физическая сущность - нет :))

dimarik 17.09.2004 14:45

Скажу больше:
Код:

this.createTextField("cDTF", 1000, 0, 0, 120, 30);
cDTF.text = "Runtime created DTF";
// Работает криво (текста на экране нет, сам объект существует)
duplicateMovieClip (cDTF, "cDFT_2", 1001);
cDFT_2.text = "cDFT_2 - Duplicated DTF Flash4 method";
cDFT_2._x = 100;
cDFT_2._y = 100;

// Не работает
cDFT_3 = cDTF.duplicateMovieClip("cDFT_3", 1003, {_x:200,_y:100});
cDFT_3.text = "cDFT_3 - Duplicated DTF FlashMX method";

И еще...
Создаем руками Dynamic TextField, обзываем инстанс как DTF.
Код:

// Работает
duplicateMovieClip (DTF, "dDTF_F4", 4);
dDTF_F4._y = 0;
dDTF_F4._y = 50;
dDTF_F4.text = "dDTF_F4 - Duplicated DTF Flash4 method";

// Не работает
dDTF_MX = _root.DTF.duplicateMovieClip("dDTF_MX", 0, {_x:0,_y:100});
dDTF_MX.text = "dDTF_MX - Duplicated DTF FlashMX method";

Что скажут отцы?

iNils 17.09.2004 14:50

При дублирование объектов созданных динамически, их размеры=0.

dimarik 17.09.2004 14:55

2 fester
Найди в коде строчку:
feld_1=vik_xml.firstChild.childNodes[0].nodeName;
Попробуй её закомментировать. Посмотри результат. Проанализируй. Поправь код. GL!

Nox Noctis 17.09.2004 14:56

Цитата:

// Не работает
dDTF_MX = _root.DTF.duplicateMovieClip("dDTF_MX", 0, {_x:0,_y:100});
а ты для начала добавь в root.DTF такой метод :) его там просто нет пока что.

Код:

_root.DTF.duplicateMovieClip = MovieClip.prototype.duplicateMovieClip;
_root.DTF.duplicateMovieClip("dDTF_MX", 0, {_x:0,_y:100});

update:
насчет метода я правильно сказал, только после добавления всё равно оно не работает, я не проверил сначала.

всё любопытственнее и любопытственнее...

dimarik 17.09.2004 15:01

Цитата:

Оригинал написал(а) iNils
При дублирование объектов созданных динамически, их размеры=0.
Действительно похоже на правду. Задание _width и _height не помогает.
Прим.: Только для TextField. К MovieClip это не относится.

2 Nox Noctis. Это кандидат для ФАК'и (imho)

dimarik 17.09.2004 15:08

2 Nox Noctis
Создаем руками Dynamic TextField, обзываем инстанс как DTF.
Код:

duplicateMovieClip (DTF, "dDTF_F4", 4);
dDTF_F4._y = 0;
dDTF_F4._y = 50;
dDTF_F4.text = "dDTF_F4 - Duplicated DTF Flash4 method";

DTF.duplicateMovieClip = MovieClip.prototype.duplicateMovieClip;
dDTF_MX = DTF.duplicateMovieClip("dDTF_MX", 0, {_x:0,_y:100});
dDTF_MX.text = "dDTF_MX - Duplicated DTF FlashMX method";
dDTF_MX._y = 100;

Так вроде работает. Только параметры объекта {_x:0,_y:100} не применяются (???). Пришлось поставить dDTF_MX._y = 100;

iNils 17.09.2004 15:10

Еще интересный вопрос, созданный ручками TextField в дебагере не отражается. А созданные динамичски, а потом дублированные отражаются.

...и вот что...почему к TextField приминима duplicateMovieClip, это что потом класса MovieClip?

Nox Noctis 17.09.2004 15:13

да, слушайте.. я туплю, спал мало :))

1. дупликейт не принимает параметра инитОбджект. и никогда не было такого :)

2.
Цитата:

Оригинал написал(а) iNils
При дублирование объектов созданных динамически, их размеры=0.
мда?
Код:

_root.createEmptyMovieClip("mc", 0);
mc.lineStyle(20, 0xff6600, 100);
mc.lineTo(.15, 0);
mc.duplicateMovieClip("mc1", 5);
mc1._x += 50;

- то же самое можно проверить на аттаче.

2dimarik
Код:

// TF - созданное заранее поле
TF.duplicateMovieClip = MovieClip.prototype.duplicateMovieClip;
TF.text = "default textfield";
//
// 1. TF.duplicateMovieClip - работает
TF.duplicateMovieClip("dupTF1", 2);
dupTF1.text = "1. hey ho! =)";
dupTF1._y += 30;
//
// 2. duplicateMovieClip(TF, "dupTF", 3) - работает
duplicateMovieClip(TF, "dupTF2", 3);
dupTF2.text = "2. hey ho! =)";
dupTF2._y += 60;

не успел запостить до тебя :)

iNils 17.09.2004 15:20

Если посмотреть List Varible, то можно увидеть, что у созданного объкта
maxhscroll = 0
type = "dynamic",

а у дублированного
maxhscroll = 36
type = "input"


2Nox:
Цитата:

то же самое можно проверить на аттаче.
о чем это ты?

Nox Noctis 17.09.2004 15:21

блин, сегодня день косячный какой-то :))
Цитата:

1. дупликейт не принимает параметра инитОбджект. и никогда не было такого :)
вай мэ :) хочу сказать после выхода шестёрки так и вправду было. в аттаче инитОбджект работал а в дупликейте - нет. так что я это по старой памяти...

потом плеер пропатчили - и терь в шестёрке работает намально :)

Nox Noctis 17.09.2004 15:31

Цитата:

Оригинал написал(а) iNils
о чем это ты?
о том что твоё высказывание про размеры дублированных динамических объектов относится только к данному случаю, к текстовым полям.

iNils 17.09.2004 15:34

Цитата:

о том что твоё высказывание про размеры дублированных динамических объектов относится только к данному случаю, к текстовым полям.
А ты об этом :) Я это знаю, поэтому и обратил внимание.

dimarik 17.09.2004 16:06

Цитата:

Оригинал написал(а) Nox Noctis
...в аттаче инитОбджект работал а в дупликейте - нет...
потом плеер пропатчили - и терь в шестёрке работает намально :)

Пробуй в 6-ке или 7-ке
Создаем руками Dynamic TextField, обзываем инстанс как DTF.

Код:

DTF.duplicateMovieClip = MovieClip.prototype.duplicateMovieClip;
dDTF_MX = DTF.duplicateMovieClip("dDTF_MX", 0, {_x:0,_y:100});
dDTF_MX.text = "dDTF_MX - Duplicated DTF FlashMX method";
//dDTF_MX._y = 100;

Работает?

Nox Noctis 17.09.2004 16:15

дублироваться-дублируется, а инитОбджект не срабатывает.

на клипах отрабатывает а на текстовых полях - нет. :)

fester 17.09.2004 16:17

Цитата:

Оригинал написал(а) dimarik
2 fester
Найди в коде строчку:
feld_1=vik_xml.firstChild.childNodes[0].nodeName;
Попробуй её закомментировать. Посмотри результат. Проанализируй. Поправь код. GL!

но как бы не в этом дело...

у мнея проблема-то другая.

и вообще блин не понял - как-то цент тяжести моей проблемы переместиля на какие-то чужие проблемы...

а почему не написать сомственный вопрос в форум а?

dimarik 17.09.2004 16:32

Цитата:

Оригинал написал(а) fester
но как бы не в этом дело...
А в чем? fulle() _всегда_ срабатывала по кнопке - ты это сам знаешь.
Тебя интересовало почему так происходит:
Цитата:

если ее вызвать сразу после задачи функции все работает как надо.
но она должна работать, когда нажимаешь на кнопку "news", а работает только trace.вывод.
Отвечаю:
Ты описал функцию fulle(), сразу после описания ты ее запустил - все ok.
Но после строчки запуска у тебя кусок кода c XML.onLoad (т.е. эта часть кода выполняется после загрузки "vik___.xml").
Там есть строка
feld_1=vik_xml.firstChild.childNodes[bt].nodeName;,
которая "портит" тебе жизнь. Что ты хотел сказать этой строкой мне не понятно.

А это что такое?
Код:

feld_1.text_.dyn_txt(i).autoSize = "left";
feld_1.text_.dyn_txt(i).text = "txt_"+sp;

надо
feld_1.text_.dyn_txt[i].autoSize = "left";
feld_1.text_.dyn_txt[i].text = "txt_"+sp;

fester 17.09.2004 23:39

вот это дело... :ю)
 
пасибо dimarik,

ты прав...
а вот про синтакс с точками и переменной я просто думал попробовать. в хэлпе не нашел варианта а [x] думал что array опрашивает...

к примеру если х все время меняется от 0 до 9

если я тебя правильно понял, то это
Код:

feld_1.text_.dyn_txt_0.autoSize = "left";
равно этому

Код:

var x=0;
Код:

feld_1.text_.dyn_txt_[х].autoSize = "left";
спасибо за помошь,

успехов

artfla$her 18.09.2004 00:26

Извиняюсь, может, конечно, я чего-то не понимаю, но.....

dyn_txt[i] - это синтаксис какого флэша? Я что-то не помню, чтобы такой записью заменяли

["dyn_txt"+i] такую. Может, опять же, я и не прав, и где-то это будет работать :confused: По-крайней мере, я тестил странные письмена и у меня они показывали undefined.

fester 20.09.2004 21:49

artfla$her ты прав!
 
да, твой вариант очень даже правельный :.)


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

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