Форум 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)
-   -   Доступ к свойствам загруженной SWFки (http://www.flasher.ru/forum/showthread.php?t=76218)

vgl 01.03.2006 08:19

Доступ к свойствам загруженной SWFки
 
Приветствую!
Решаю такую задачку:
Необходимо загрузить SWFку, содержащую векторное изображение, а затем по запросу отобразить это изображение, динамически меняя его высоту.
1. Использую MovieClipLoader для загрузки. Создаю пустой клип и в него гружу.
2. На этапе загрузки без проблем изменяю ширину через обращение к target_mc в .onLoadInit.
3. Потом ложу на нижний, невидимый слой и по необходимости перевожу на верхний видимый.
4. ... а вот тут и возникает проблема. Не удается изменит параметр _height т.к. я обращаюсь через "пустой" клип в который загружена SWFка, а у него выста 0. Т.е. видимо надо как-то добратся до свойств самой картинки... пробовал ссылатся на нее всеми способами, игрался с _lockroot, но все безрезультатно:(
Подскажите, как грамотнее решить эту задачку :rolleyes:

breez38 01.03.2006 09:41

Изменять размеры мувиклипа через _width и _height нельзя. Можно только масштабировать мувик при помощи _xscale и _yscale. Они задаются в процентах, где 100% - оригинальный размер.

Например, если тебе нужно скажем увеличить высоту на 20 пикселей то можно написать так:

Код:

my_mc._yscale = (my_mc._width + 20) * 100 / my_mc._width;
Это приведет к "растягиванию" мувиклипа по высоте.

vgl 01.03.2006 10:02

Цитата:

Сообщение от breez38
Изменять размеры мувиклипа через _width и _height нельзя. Можно только масштабировать мувик при помощи _xscale и _yscale. Они задаются в процентах, где 100% - оригинальный размер.

Например, если тебе нужно скажем увеличить высоту на 20 пикселей то можно написать так:

Код:

my_mc._yscale = (my_mc._width + 20) * 100 / my_mc._width;
Это приведет к "растягиванию" мувиклипа по высоте.

Спасибо! Я стока бился с _height, а оказывается она впринципе видимо успехе не принесла бы. :D

meiciuc 01.03.2006 10:39

_height & _width тоже прекрасно можно ипользовать дял измениения размеров клипа. Просто надо было обращаться к новому загруженному клипу по имени старого клипа. т.е. какже как и в случае
Код:

my_mc._yscale
только было бы
Код:

my_mc._height = ...

breez38 01.03.2006 10:48

to meiciuc
мда... действительно то же можно и через _height и _width... только почему у меня это раньше не работало - понять не могу :confused:

meiciuc 01.03.2006 11:01

не работало только потому, что была неверная адресация. Уверен, помог пример breez38.

vgl 01.03.2006 11:13

Цитата:

Сообщение от meiciuc
не работало только потому, что была неверная адресация. Уверен, помог пример breez38.

А у меня не работает. Размер загруженной внутрь "пустого" клипа my_mc SWFки меняется тока через масштабирование.

my_mc._height = 400;
trace(my_mc._height);

Выдаст 0;

а когда делал my_mc._yscale = 400 то все замечательно растянулось в 4 раза.

meiciuc 01.03.2006 12:49

Код:

my_mc._height = 400;
trace(my_mc._height);

Выдаст 0;

все правильно, просто в тот момент целевой клип еще пустой, о если он пустой, то и размеры у него соответсвующие - хоть 1000000 пикселей ему задай. Размеры через _height & _width можно задавать лишь после проверки на наличие загруженного клипа.

meiciuc 01.03.2006 13:02

кстати, использование события onLoadComplete - к сожалению, не панацея. Попробуй проанализировать trace из хелпового примера по этому событию. Если ты грузишь клип с локальной машины, то получишь
Код:

>> loadListener.onLoadComplete()
>> =============================
>> target_mc._width: 0
>> httpStatus: 0
>> loadListener.onLoadInit()
>> =============================
>> target_mc._width: 115

loadListener.onLoadComplete() был вызван раньше, чем loadListener.onLoadInit() - это первое, но этое ерунда. Хуже другое

Код:

>> loadListener.onLoadComplete()
>> =============================
>> target_mc._width: 0

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

KidsKilla 01.03.2006 13:04

Чилавеки. onLoadInit происходит как правило до onLoadComplete. а высоту менять у того что ещё не загрузилось бессмысленно...


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

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