Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.02.2008, 19:14
zeus_sk вне форума Посмотреть профиль Отправить личное сообщение для zeus_sk Найти все сообщения от zeus_sk
  № 1  
Ответить с цитированием
zeus_sk

Регистрация: Feb 2008
Сообщений: 7
По умолчанию обращение к переменной мувиклипа из функции...

посмотрите код внизу...
программно создаю мувиклип mc1...
внитри mc1 программно создаю клип test...
внутри mc1["test"] присваиваю переменной slovo значение "Hello world!"...
в test подгружаю картинку через loadMovie...
функция myDraw просто должна значение mc1["test"].slovo через trace...

при прямом вызове myDraw выводит значение, а при вызове myDraw из другой функции пишет undefined...

в чем проблема?

Код:
import flash.display.BitmapData;

var mc1:MovieClip = _root.createEmptyMovieClip('mc1',_root.getNextHighestDepth());
mc1.createEmptyMovieClip("test",mc1.getNextHighestDepth());

mc1["test"].slovo='Hello world!'; //можно ли так делать??????
mc1["test"].loadMovie("img.jpg");

function myDraw(mc:MovieClip) {
	mc._x+=10;
	trace(mc["test"].slovo);
}

myDraw(mc1); // Hello world!
_root.onMouseDown = function() {
	myDraw(mc1); // undefined	
}


Последний раз редактировалось zeus_sk; 22.02.2008 в 19:17.
Старый 22.02.2008, 19:26
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Вот эту строчку уберите и будет работать
Код:
mc1["test"].loadMovie("img.jpg");
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 22.02.2008, 20:19
zeus_sk вне форума Посмотреть профиль Отправить личное сообщение для zeus_sk Найти все сообщения от zeus_sk
  № 3  
Ответить с цитированием
zeus_sk

Регистрация: Feb 2008
Сообщений: 7
Цитата:
Сообщение от iNils
Вот эту строчку уберите и будет работать
Код:
mc1["test"].loadMovie("img.jpg");
а если серьезно???
мне нужно туда подгрузить картинку )) просто необходимо... )

Старый 22.02.2008, 20:19
Molecula вне форума Посмотреть профиль Отправить личное сообщение для Molecula Найти все сообщения от Molecula
  № 4  
Ответить с цитированием
Molecula
 
Аватар для Molecula

Регистрация: Apr 2007
Сообщений: 1,369
Очень напоминает:
Цитата:
Забегает мужчина к хирургу в кабинет и кричит:
- Доктор, доктор, у меня в ухе отвертка, что делать?
Хирург смотрит - действительно отвертка торчит.
Он её резко выдергивает и втыкает ему в глаз:
- Голубчик, у меня рабочий день закончился, идите к окулисту, он до 19:00 работает.
Вам loadMovie действительно не стоит использовать, и вот это:
Код:
mc1["test"].slovo='Hello world!';
Не в том месте вставляете.
Для начала используйте MovieClipLoader для загрузки картинки.

Если у Вас большие вложения, используйте ссылку:
Код:
var test:MovieClip = mc1.createEmptyMovieClip("test",mc1.getNextHighestDepth());
test._id=someThing;
Что бы не писать таких длинных фраз - mc1["test"]...
И как то странно, что Вы пытаетесь строковую константу присвоить динамически созданному св-ву мувика.
__________________
john

Старый 22.02.2008, 22:03
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 5  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Создайте в mc1["test"] контейнер и грузите картинку туда.

Старый 22.02.2008, 22:13
Molecula вне форума Посмотреть профиль Отправить личное сообщение для Molecula Найти все сообщения от Molecula
  № 6  
Ответить с цитированием
Molecula
 
Аватар для Molecula

Регистрация: Apr 2007
Сообщений: 1,369
Так он же test в mc1 создал, что бы в test грузить.
__________________
john

Старый 23.02.2008, 10:34
zeus_sk вне форума Посмотреть профиль Отправить личное сообщение для zeus_sk Найти все сообщения от zeus_sk
  № 7  
Ответить с цитированием
zeus_sk

Регистрация: Feb 2008
Сообщений: 7
люди... помогите мне просто понять, почему при вызве функции myDraw из другой функции происходит так?
причем trace(mc["test"]) выводит _level0.map.test..

пробовал MovieClipLoader... не помогло

Старый 23.02.2008, 10:46
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Смысл общий такой.
Все содержимое мувиклипа: графика, свойства и методы определенный пользователем, сразу после инициализации загрузки удаляется. Но сама загрузка происходит асинхронно выполнению кода. И именно поэтому, хотя вы и вызвали loadMovie, он не сразу удалил свойство slovo, а через некоторое время, поэтому прямой вызов myDraw дал результат, а вызов при нажатии уже нет.
Есть два варианта:
1. Использовать MovieClipLoader и назначать slovo после окончания загрузки в событии onLoadInit
2. Загружать не в mc1.test, а создать клип-контейнер mc1.img и грузить туда, а slovo хранить в том же mc1.test (хотя что мешает грузить в mc1.test, а slovo хранить в mc1?)
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 23.02.2008, 10:58
zeus_sk вне форума Посмотреть профиль Отправить личное сообщение для zeus_sk Найти все сообщения от zeus_sk
  № 9  
Ответить с цитированием
zeus_sk

Регистрация: Feb 2008
Сообщений: 7
iNils

Код:
myDraw(mc1); // Hello world!
setTimeout(trace,1000,mc1["test"].slovo); // Hello world!
setTimeout(myDraw,2000,mc1); //undefined
setTimeout(trace,3000,mc1["test"].slovo); // Hello world!
а вот так? напрямую mc1["test"].slovo доступно и через 3 секунды и через 10.... а вот при вызове из другой функции undefined

Старый 23.02.2008, 11:41
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 10  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Весь код полностью приведите. А то вот такой вариант, везде дает Hello world!
Код:
var mc1:MovieClip = _root.createEmptyMovieClip ('mc1', _root.getNextHighestDepth ());
mc1.createEmptyMovieClip ("test", mc1.getNextHighestDepth ());
mc1["test"].slovo = 'Hello world!';
function myDraw (mc:MovieClip) {
	mc._x += 10;
	trace (mc["test"].slovo);
}
myDraw (mc1);
setTimeout (trace, 1000, mc1["test"].slovo);
setTimeout (myDraw, 2000, mc1);
setTimeout (trace, 3000, mc1["test"].slovo);
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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