![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+1 16.07.13]
[+4 16.07.13] Регистрация: Oct 2005
Сообщений: 217
|
По-порядку
ldr - это объект Loader. ldr.content - это то что вы загрузили в Loade, в вашем случае объект MovieClip; ldr.width и ldr.height берут свои значения визуального объекта test.swf опустил trace вниз , потому что вы ниже меняете значения ширины и высоты Так тоже работает stage.scaleMode = "noBorder"; var delitel = 0; ldr.width = 400; ldr.height = 200; var movikWidth = ldr.width; var movikHeight = ldr.height; trace(movikWidth); trace(movikHeight); trace("-"); trace(ldr.width); trace(ldr.height); ldr.x = (stage.stageWidth - movikWidth)/2; ldr.y = (stage.stageHeight - movikHeight)/2; addChild(ldr); и height у LoaderInfo только для чтения. ldr.contentLoaderInfo.width берет значение свойства .stage.width загружаемой флешки . а когда она загрузилась stage у них становится общий , тот куда она была загружена . Последний раз редактировалось belv; 04.07.2013 в 20:38. |
|
|||||
|
Регистрация: Jan 2013
Сообщений: 40
|
belv. Да, но смысл вот в чём.. Если в начале кода(во втором кадре), поставить trace(ldr.content.width) и trace(ldr.content.height) и ради интереса посмотреть, какие же значения возращаются. То мы увидим, что возвращаются размеры 150x150 пикселей,а не 330x250 пикселей. Вот, что у меня получается в процессе компилирования сцены(изображение):
|
|
|||||
|
Регистрация: Jan 2013
Сообщений: 40
|
Посмотрите слудующие примеры:
trace(ldr.contentLoaderInfo.width); // возвращает 330 пикселей - правильный размер trace(ldr.content.width); // возвращает 150 пикселей - неправильный размер. В загружаемой flash'ке, такой размер имеется только у синиго квадрата, по ширине и высоте. Сама же flash'ка имеет размер рабочей области по ширине 330 пикс. Возвращаясь к изображению.. Синий квадрат, должен быть ровно по середине рабочей области. Но так как я не могу выставить ширину и высоту загруженной flash'ки, квадрат смещается вправо и позиционируется в окне уже неверно. Добавлено через 5 минут Следовательно, используя ldr.content.width, мы не сможем выставить ширину, так как он выставляет ширину не рабочей области flash'ки, а ширину синего квадрата. То же самое и с ldr.content.height. Отсюда и вся неурядица.. Последний раз редактировалось StasHappy; 04.07.2013 в 20:57. |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 497
|
Я так и не понял, чего вы в результате хотите. Зачем вам менять размер рабочей области? Штатными средствами это сделать не получится. Нештатными - вполне. Грузите флешку как массив байт, смотрите заголовок, при необходимости - распакуете, правите в метаданных размер (он в фиксированной позиции после распаковки будет), загружаете как массив байт. Только вот на что именно вы будете править? И какой в этом смысл? Объекты за пределами рабочей области тоже будут видны и сами никуда не переместятся.
Вам или правиьный scollRect нужен, или loader.getBounds(loader)/loader.content.getBounds(loader.content). И центрировать относительно настоящего размера и границ. В реальной задаче и scrollrect и bounds могут понадобиться. Bounds вообще всегда нужны, когда точка привязки не совпадает с левой верхней визуальной границей. А еще некоторые проблемы решаются организационными методами, после которых вторая флешка имеет всегда правильный размер. |
|
|||||
|
Регистрация: Jan 2013
Сообщений: 40
|
Цитата:
|
|
|||||
|
мда...
имеем 550х400 из свойств width и height объекта contentLoaderInfo имеем сам конетнт с размерами 150х150 имеем размеры нужного прямоугольника до которого нужно сдать наши 550 и 400 соответственно. например возьмем 300х300; далее: content.scaleX = 300/550; content.scaleY = 300/400; думается мне что так как-то..
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
|
Регистрация: Jan 2013
Сообщений: 40
|
Данным способом, изменяется опять же размер синего прямоугольника, а не самой flash'ки. Ребят. Неужели суть проблемы не ясна?
test1.swf я сделал следующим способом. Открыл редактор, назначил в свойствах сцены размеры 330 px по ширине и, 250 px по высоте. Далее вставил прямо в центр сцены прямоугольник синего цвета, со сторонами 150 на 150 px по ширине и высоте. И сохранил в swf формат. То есть в этой flash'ке, у нас имеется только сцена с прямоугольником посередине. Идём далее. Загружаю данную flash'ку в свой прелоадер и сморю какие размеры показываются. В итоге: Ибо 330px и 250px - это размеры моей, толька что созданной flash'ки. Спрашивается, почему нам показываются не те размеры? Почему показываются не размеры самой flash'ки, а размеры синего прямоугольника?.. |
|
|||||
|
[+1 16.07.13]
[+4 16.07.13] Регистрация: Oct 2005
Сообщений: 217
|
А почему Вы не хотите поставить синий квадрат по координатам x=0 y=0 а в загружающей флешке позиционировать так как вы пишете?Чтобы не было смещения.
|
|
|||||
|
Регистрация: Jan 2013
Сообщений: 40
|
Цитата:
Добавлено через 2 минуты Вся проблема в том, что ldr.content.width возвращает не размер flash'ки, а размер синего прямоугольника. А следовательно, через этот вариант, пытаясь установить новые значения для flash'ки, мы на самом деле установим значения для этого синего прямоугольника. Вы можете сами в этом убедиться. |
|
|||||
|
[+1 16.07.13]
[+4 16.07.13] Регистрация: Oct 2005
Сообщений: 217
|
если вы зададите ldr.x= 0 и ldr.y =0 , то увидите смещение
относительно верхнего левого угла.Об этом и писал maxkar |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:21. |
|
|
« Предыдущая тема | Следующая тема » |
|
|