Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как вызывать функции (http://www.flasher.ru/forum/showthread.php?t=137641)

semenyakinVS 18.03.2010 22:10

Как вызывать функции
 
Доброго времени суток. Столкнулся с проблемой в AS2.

Создаю MovieClip с функцией:
Код AS1/AS2:

function getTrue(){ return true; }

Помещаю на сцену его экземпляр с именем testMC. Пытаюсь вызвать функцию.
Код AS1/AS2:

trace(testMC.getTrue());

Флэш пишет: "undefined". Но в любом событии, в любом слудеющем кадре я получаю доступ к getTrue().

Если аттачить клип динамически - всё равно не помогает.

Почему так, как от этого избавиться? Помогите, если не сложно.

in4core 18.03.2010 23:25

в каком месте вы вызываете функцию? На руте или где? Если на руте все должно работать.
Код AS1/AS2:

function getTrue():Boolean { return true; }

Так корректнее

NoCD 19.03.2010 13:25

Цитата:

Сообщение от semenyakinVS (Сообщение 894069)
Доброго времени суток. Столкнулся с проблемой в AS2.

Создаю MovieClip с функцией:
Код AS1/AS2:

function getTrue(){ return true; }

Помещаю на сцену его экземпляр с именем testMC. Пытаюсь вызвать функцию.
Код AS1/AS2:

trace(testMC.getTrue());

Флэш пишет: "undefined". Но в любом событии, в любом слудеющем кадре я получаю доступ к getTrue().

Если аттачить клип динамически - всё равно не помогает.

Почему так, как от этого избавиться? Помогите, если не сложно.


Если мне не изменяет память, то testMC.getTrue() не сможет вызваться. По той простой причине, что у мувика testMC нет такого метода getTrue().

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

Код AS1/AS2:

 
createEmptyMovieClip("mc",1000)
MovieClip.prototype.getTrue = function(){
        return true
        }
 
        trace(mc.getTrue())


in4core 19.03.2010 13:41

Все там может вызваться. вы ошибаетесь. getTrue это не метод это функция находящаяся внутри клипа и все. и никак не его метод

NoCD 19.03.2010 14:22

Не внимательно прочитал, что автор внутри мувика код пишет.

semenyakinVS 19.03.2010 19:16

Да не работает, честное слово! Я тоже когда столкнулся с этим очень удивился!

Я проверял не один раз. Функция вызывается, но только в следующем кадре. Сразу после создания мувика, в том же кадре флэш попросту её не видит. Переменные видит, а функции - хоть убей... Не знаю прямо что делать! Сейчас так извращаться приходиться, чтобы функции использовать…

Может быть, что в этом виноват компилятор?

iflamberg 19.03.2010 20:56

что-то вы бред говорите. Пришлите что там у вас получается. Только в cs3.

semenyakinVS 19.03.2010 21:45

Вложений: 1
Смотрите. В CS3 не могу, потому, что сейчас работаю с CS2, и именно в CS2 интересует причина глюков.

iflamberg 19.03.2010 22:07

это потому что код в главном кадре выполняется до того, как выполнится код в мувике. Соответсвенно, у него еще нет этой функции. Вставьте trace во вложенный мувик и всё вам станет понятно. Если добавить второй кадр с этим же мувиком и перенести код в него, то код выполнится правильно.

Мораль: не пишите код в мувиках, только на главном таймлайне. Сами ведь потом затрахаетесь искать на каком мувике что писали.

semenyakinVS 19.03.2010 22:23

Странно... А почему в CS1 это работало?


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

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