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

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

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

Регистрация: Mar 2009
Сообщений: 20
По умолчанию beginBitmapFill фоном как?

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

Код AS1/AS2:
_root.listener = new Object();
_root.listener.onResize = function() { this.scaleMovie(); }
Stage.addListener(_root.listener);
 
this.scaleMovie = function() {
trace("А окошечко-то другим стало");
}
Stage.scaleMode = "noscale";
Stage.align = "TL";
//
// сама функция
function resizeContent ():Void {
   bmp_fill_mc._width = Stage.width/2;
   bmp_fill_mc._x = (Stage.width - my_mc._width)/2;
}
//
// слушатель для события onResize
var resizeListener:Object = new Object();
resizeListener.onResize = risizeContent;
Stage.addListener(resizeListener);
import flash.display.*;
import flash.geom.*;
var myBitmapData:BitmapData = BitmapData.loadBitmap ("libBitmap");
this.createEmptyMovieClip ("bmp_fill_mc", this.getNextHighestDepth ());
with (bmp_fill_mc) {
matrix = new Matrix ();
repeat = true;
beginBitmapFill (myBitmapData, matrix, repeat, smoothing);
moveTo (0, 0);
lineTo (0, 3000);
lineTo (3000, 3000);
lineTo (3000, 0);
lineTo (0, 0);
endFill ();
}
bmp_fill_mc._xscale = 100;
bmp_fill_mc._yscale = 100;

Старый 23.11.2010, 11:26
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Цитата:
Сообщение от Survey Посмотреть сообщение
не могу background`ом сделать (полученный фон "лежит" сверху и всё перекрывает
Вы сами так указали, выбрав последнюю глубину для мувика фона:
Код AS1/AS2:
this.createEmptyMovieClip ("bmp_fill_mc", this.getNextHighestDepth ());
Например, фон создайте на нулевой глубине, а не на самой последней, а контент разместите в контейнере на глубине 1.
__________________
Идите первым!

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

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Или _root залейте.

Старый 23.11.2010, 13:17
Survey вне форума Посмотреть профиль Отправить личное сообщение для Survey Найти все сообщения от Survey
  № 4  
Ответить с цитированием
Survey

Регистрация: Mar 2009
Сообщений: 20
т.е так?:
Код AS1/AS2:
this.createEmptyMovieClip ("bmp_fill_mc", this.getNextHighestDepth (0));
а как в контейнер слой отдельный поместить (который должен быть сверху)?

Старый 23.11.2010, 16:31
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 5  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Нет.
Вот это выражение вычисляет последнюю свободную глубину внутри объекта, на который указывает this:
Код AS1/AS2:
this.getNextHighestDepth();
Чтобы создать мувик на 0-ой глубине, следует просто записать
Код AS1/AS2:
this.createEmptyMovieClip ("bmp_fill_mc", 0);
Лучше сделайте как udaff посоветовал, тогда не надо будет лишние контейнеры создавать.

То есть ничего не создавайте, а просто залейте _root:
Код AS1/AS2:
import flash.display.*;
import flash.geom.*;
var myBitmapData:BitmapData = BitmapData.loadBitmap ("libBitmap");
 
matrix = new Matrix ();
repeat = true;
beginBitmapFill (myBitmapData, matrix, repeat, smoothing);
moveTo (0, 0);
lineTo (0, 3000);
lineTo (3000, 3000);
lineTo (3000, 0);
lineTo (0, 0);
endFill ();
__________________
Идите первым!


Последний раз редактировалось mooncar; 23.11.2010 в 16:37.
Старый 23.11.2010, 20:27
Survey вне форума Посмотреть профиль Отправить личное сообщение для Survey Найти все сообщения от Survey
  № 6  
Ответить с цитированием
Survey

Регистрация: Mar 2009
Сообщений: 20
Спасибо, всё заработало
Т.к. бэкграундом надо "замостить" код немного изменил
Код AS1/AS2:
_root.listener = new Object();
_root.listener.onResize = function() { this.scaleMovie(); }
Stage.addListener(_root.listener);
 
this.scaleMovie = function() {
trace("А окошечко-то другим стало");
}
Stage.scaleMode = "noscale";
Stage.align = "TL";
//
// сама функция
function resizeContent ():Void {
   bmp_fill_mc._width = Stage.width/2;
   bmp_fill_mc._x = (Stage.width - my_mc._width)/2;
}
//
// слушатель для события onResize
var resizeListener:Object = new Object();
resizeListener.onResize = risizeContent;
Stage.addListener(resizeListener);
import flash.display.*;
import flash.geom.*;
var myBitmapData:BitmapData = BitmapData.loadBitmap ("libBitmap");
//this.createEmptyMovieClip ("bmp_fill_mc", this.getNextHighestDepth ());
with (myBitmapData) {
matrix = new Matrix ();
repeat = true;
beginBitmapFill (myBitmapData, matrix, repeat, smoothing);
moveTo (0, 0);
lineTo (0, 3000);
lineTo (3000, 3000);
lineTo (3000, 0);
lineTo (0, 0);
endFill ();
}
bmp_fill_mc._xscale = 100;
bmp_fill_mc._yscale = 100;
Теперь другой вопрос появился:
есть мувик,который отображается в правом углу флешки. При растяжении оной фон "замощается" но мувик не остаётся справа (остаётся на том же самом месте), как можно это исправить?

Старый 23.11.2010, 20:36
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 7  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Корректируйте его положение в той же функции resizeContent.
Вначале нужно запомнить его положение по x и y и начальные размеры сцены. И, поскольку у вас стоит "TL", задаете в resizeContent добавки к начальным координатам как разности между новыми размерами сцены и старыми значениями ширины и выстоты.
Если бы стояло "T", делали бы половинную добавку, т.к. растяжение-сжатие сцены происходило бы от центра.
__________________
Идите первым!

Старый 24.11.2010, 09:14
Survey вне форума Посмотреть профиль Отправить личное сообщение для Survey Найти все сообщения от Survey
  № 8  
Ответить с цитированием
Survey

Регистрация: Mar 2009
Сообщений: 20
Спасибо.

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

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

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


 


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


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