Форум 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=132119)

harrisunreal 04.11.2009 20:17

Управление вложеным мувиком
 
Я полный ноль в AS, но есть задача и ее необходимо решить.
Необходимо управлять и иметь доступ к объекту подгруженного мувика.

Код AS1/AS2:

var container:MovieClip = createEmptyMovieClip("container", getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(this);
mcLoader.loadClip("24.swf", container); //подгружаем внешний мувик
 
function onPress (target_mc:MovieClip)
{
  trace (target_mc._currentframe); //здесь хочу узнать текущий номер фрейма
}
 
function onLoadInit (target_mc:MovieClip)
{
  trace (target_mc._totalframes); //количество фреймов подгруженного мувика
}

У меня получается, что доступ есть только в функции onLoadInit().

mooncar 04.11.2009 20:28

Аналогия тут не годится.
onLoadInit - это анонимная функция-обработчик слушателя, которым в данном случае выступает сам текущий ролик, точнее, уровень таймлайна, где записан этот код.
А onPress же должно относится к загружаемому ролику. Нужно записать так:
Код AS1/AS2:

var container:MovieClip = createEmptyMovieClip("container", getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(this); //тут this - это текущий таймлайн
mcLoader.loadClip("24.swf", container); //подгружаем внешний мувик
 
this.onLoadInit = function  (target_mc:MovieClip) {
        //все операции с загруженным роликом выполняем строго внутри onLoadInit, в том числе и назначение ему ф-ии обработки события onPress
        trace (target_mc._totalframes);
        target_mc.onPress = targetOnPress;
}
 
function targetOnPress () {
        trace(this._currentframe) //а тут this - это загруженный ролик
}


harrisunreal 05.11.2009 12:21

Не работает. Событие нажатия мышкой не обрабатывается.

mooncar 05.11.2009 12:57

Нет, код верный.
Не работать может, если, например, в загруженном ролике нет заливки в месте, где делается клик.

harrisunreal 05.11.2009 13:05

Попробовал с другими SWF-ми, с некоторыми работает, но попрежнему выводит 1 - номер "родительского" фрейма, а не подгруженного. В onLoadInit я могу получить количество кадров подгруженного мувика. Необходимо в любое время знать текущий (проигрываемый) номер кадра.

mooncar 05.11.2009 13:23

Вложений: 1
Проверьте:
Код AS1/AS2:

function targetOnPress () {
        //trace(this._currentframe) //а тут this - это загруженный ролик
        trace(this)
}

Выведет:
Код:

_level0.container
То есть this указывает на загруженный ролик, а трейс this._currentframe выведет именно текущий кадр загруженного.
Если не верите, см. приложенный пример.

harrisunreal 05.11.2009 13:34

У меня выводит: _level0.application.container
Спасибо за ответы, я для начала разберусь с версиями своих флешек и самой IDE, а то не могу открыть Ваши примеры.

Добавлено через 57 часов 2 минуты
Спасибо, все работает.


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

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