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

ThyQ 09.07.2009 14:52

будто уменьшает содержимое, оставляя пустые края
 
Вложений: 1
Здравствуйте, Уважаемые.
Этот форум для меня теперь настоящий учебник.
Взялся за написание "плагина", если "это" так можно назвать.
все элементы создаются программно. Суть в том, что указанная фотка получает возможность быть более детально рассмотрена (в той части фотки, где находится курсор мыши).
в HTML определяю четко размеры самой свфки, и передаю те же значения в свфку.
В свфке создаю несколько мувиклипов
в один гружу фоту(фон)
во второй гружу ту же фоту но умноженную в размере на множитель zoom (это даёт эффект увеличенности), из другого делаю маску, соответственно накладываю маску, и двигаю маску в соответствии с координатами мыши, смещая увеличенную фоту под маской так, чтобы в области маски показывался тот же участок, на который указывает мышь в неувеличенной фоте.
В общем функциональность присутствует.
Но есть одно "НО", при тестировании, подставляя разные фото я столкнулся с странным поведением свфки. Она будто уменьшает контент, оставляя часть свфки пустой.

pwidth и pheight - переменные передаваемые из HTML
После изнурительного поиска нашел лишь это:


Код AS1/AS2:

Stage.width=parseInt(pwidth);
Stage.height=parseInt(pheight);


но ошибка не устранилась...

Так я пытался растягивать мувиклип неувеличенной фотки на всю область свфки


Код AS1/AS2:

var mcl:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
mcl.addListener(listener);
this.createEmptyMovieClip("the_image", 0);
mcl.loadClip(small_pic, the_image);
listener.onLoadInit = function(the_image:MovieClip) {
the_image._width=parseInt(pwidth);
the_image._height=parseInt(pheight);
};


Потом я подумав ещё предположил: "может в zoomе дело???, мол он жеж увеличвает изображение под маской, поэтому может и выделяет под себя "территорию" внутри свфки..."
Организовано это так:


Код AS1/AS2:

var mcl:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
mcl.addListener(listener);
createEmptyMovieClip("bg_pic", 1);
mcl.loadClip(small_pic, bg_pic);
listener.onLoadInit = function(bg_pic:MovieClip) {
bg_pic._width=pwidth*zoom;
bg_pic._height=pheight*zoom;
 
bg_pic.setMask(circle_mc);
};


Но при значительном изменении значения zoom "пустая область" осталась неизменной.
Код с готовой работой тоже прилагаю, если некорректно описал, простите...2 дня уже не сплю...((( :wacko:

iNils 09.07.2009 15:06

Цитата:

Stage.width
Stage.height
Эти свойства read-only, изменить их вы не можете.

dimarik 09.07.2009 20:00

ThyQ, я не увидел четко сформулированного вопроса.

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

ThyQ 09.07.2009 23:53

Цитата:

ThyQ, я не увидел четко сформулированного вопроса.
В том-то и дело, что вопрос как-то даже сложно сформировать.
Цитата:

Из фразы "она будто уменьшает контент, оставляя часть свфки пустой" попытаюсь предположить, что контент не должен уменьшаться, и тем более не оставлять часть свфки пустой.
Именно... содержимое должно заполнять всё выделяемое под свфку пространство.
Может я в алгоритме где-нить пропустил чего? Или просто какую-то мелочь ещё не знаю? Вы прикреплённый файл смотрели, там сразу видно что я имел в виду. (запускать надо хтмл файл, хотя думаю вы знаете)

Попробую переформировать вопрос:
Как заставить содержимое растянуться по всей области выделенной под свф так, чтобы не оставалось пустот?

Цитата:

Эти свойства read-only, изменить их вы не можете.
Спасибо, значит не туда ткнулся, буду знать. Пишу в АС 2.0 поэтому не могу могу обратиться к StageWidth

dimarik 10.07.2009 00:02

Я посмотрел Ваш исходник. Оптимизированную версию выложу вскоре. Но главный затык в неправильном вычислении координат big_pic в обработчике someListener.onMouseMove

Попробуйте такой вариант:
Код AS1/AS2:

this.big_pic._x = -(Stage.width - this.big_pic._width) / 2 * (1 - this._xmouse / Stage.width);

c this.big_pic._y аналогично.

ThyQ 10.07.2009 02:51

Цитата:

Но главный затык в неправильном вычислении координат big_pic в обработчике someListener.onMouseMove
Но ведь по моей формуле он указывает именно в ту точку куда надо и смещает отлично. Еслиб только фоновое изображение растягивалось на всю область...:umnik2:
Прошу прощения, но предоставленная Вами формула работает недостаточно корректно, смещение не точное, изображение под маской не соответствует точке на видимом, "фоновом" изображении
Моя формула работает именно так как надо...по крайней мере по отношению к маске.
Может дело в том, что при создани fla у меня стоит 800х600 (размер рабочей площади указываемый в самом приложени)? Есть ли возможность изменять её?

dimarik 10.07.2009 13:05

Вложений: 1
Осилил.

ThyQ 10.07.2009 18:47

Цитата:

Осилил.
Большое спасибо, очень поучительно, код просо прекрасен.
Но мой вопрос здесь всё же не решился...точнее задал я его наверное некоректно, за что многократно извиняюсь.
Выспавшись, переформирую вопрос:
Вставляемая видимая фотка должна занимать всю площадь свфки, которая в свою очередь принимает переданные из хтмл значения.
Т.е. если передаю из хтмла параметры: 400х400 то и фотка и свфка принимают размеры 400х400, передаю параметры: 1024х768, то и фотка в свфке и свфка принимают эти размеры. А в моём случае получается что фотка 600х800, но вставляет он её будто уменьшенной ~ 500х665, а остальная область остаётся пустой.
В осиленном Вами примере вы вовсе не передаёте значения размеров растянутой (в случае, если вставляемая фотка меньше от природы) фотки.
Как же эту фотку растянуть от "края до края" самой свфки? Вместить её (фотку) заполнив всё внутреннее пространство?Должен же быть какой-то метод?

dimarik 10.07.2009 19:01

Изменяйте размер флешки из JavaScript. Я вкладывал объект FP в таблицу и изменял ее размер. Можно воспользоваться классом ExternalInterface, чтобы передавать странице нужные размеры, после загрузки картинки.

ThyQ 11.07.2009 01:31

А без Яваскрипта сделать это никак? Внутри флешки, с помошью AS 2.0
Он ведь беспорядок наводит в самой свфке.


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

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