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

torrentevg 15.02.2009 02:27

Повторяющийся фон
 
Кто знает как сделать в флеше так что бы фон повторялся. Например у меня есть патерн(узор) который должен повторяться по всей сцене. Таким образом уменьшая размер ролика.
В принципе решение есть, например добавить в Библиотеку изображение которое будет служить узором потом разместить его на сцене, конвертировать этот узор в Символ(Movie Clip) не нажимая ОК заходим в Advanced где ставим чекбокс напротив Export for ActionScript, для поля Identifier задаем имя square жмем ОК.
Удаляем мувик со сцены, идем в первый кадр жмем F9 и вставляем следующий АС:
Код AS1/AS2:

 
tileBG = function () {
 
tile_width = 34;
tile_height = 34;
//
x_max = Math.round(Stage.width/tile_width);
y_max = Math.round(Stage.height/tile_height);
trace(x_max);
trace(y_max);
for (x=0; x<=x_max; x++) {
 
for (y=0; y<=y_max; y++) {
 
bg = _root.attachMovie("square", "bg"+x+y, this.getNextHighestDepth());
bg._x = tile_width*x;
bg._y = tile_height*y;
 
}
 
}
 
};
tileBG();

И все было бы хорошо .. но есть всегда какое то НО в котором мне так и не получается разобраться и заключается оно в том что в каком бы слое мы не вставляли данный скрипт он всегда будет на самом верху. Даже если у вас 100 слоев выше этого этот узор будет перекрывать их всех. Теперь вопрос каким образом поместить узор на сцену таким образом что бы он был всегда на самом низу. Можно ли средствами АС указать z-index ?

Fatality 15.02.2009 02:53

Цитата:

В принципе решение есть, например добавить в Библиотеку изображение которое будет служить узором потом разместить его на сцене, конвертировать этот узор в Символ(Movie Clip) не нажимая ОК заходим в Advanced где ставим чекбокс напротив Export for ActionScript, для поля Identifier задаем имя square жмем ОК.
Удаляем мувик со сцены, идем в первый кадр жмем F9 и вставляем следующий АС:
Какое поразительное умозаключение ! Сами догадались ?

Для начала, лучше откажитесь от getNextHighestDepth() и задавайте глубину переменной-счетчиком. А "z-index" если его так называть, можно указать методом clip_mc.swapDepth(собственно "z-index").
Код AS1/AS2:

tileBG = function () {
 
tile_width = 34;
tile_height = 34;
//
x_max = Math.round(Stage.width/tile_width);
y_max = Math.round(Stage.height/tile_height);
trace(x_max);
trace(y_max);
var num:Number = 0;
for (x=0; x<=x_max; x++) {
 
for (y=0; y<=y_max; y++) {
bg = _root.attachMovie("square", "bg"+x+y, num);
bg._x = tile_width*x;
bg._y = tile_height*y;
 
bg.onRelease = function()
{
        trace(this.getDepth());
}
 
num--;
}
 
}
 
};
tileBG();


Жень Шень 16.02.2009 12:36

Вложений: 1
Привет!
Посмотри пример. Фишка в том, что не надо:
1. Задавать размеры патерна. Габариты артинки определяют шаг.
2. Можно динамически менять заливку нужным патерном.
3. При изменении размера окна, картинка не масштабируется.
4. ... и при этом заливает всю область окна.
Но, последнее по своему усмотрению (можно ограничится только сценой клипа).

silin 16.02.2009 12:49

такой еще вариант:
Код AS1/AS2:

import flash.display.BitmapData;
 
var pattern:BitmapData=BitmapData.loadBitmap("pic");//pic - id картинки в библиотеке
_root.beginBitmapFill(pattern);
_root.lineTo(Stage.width,0);
_root.lineTo(Stage.width,Stage.height);
_root.lineTo(0,Stage.height);
_root.lineTo(0,0);
_root.endFill();


iGaF 26.04.2009 22:59

Всем привет!
есть картинка она загружается в фон. нужно что бы при наведение мышкой в правый конец дублировалась таж картинка и еще плавно двигалась влево) т е как бы зацикливая фон. подскажите как сделать) может быть пример какой нить)
заранее спасибо!

а еще тут на форуме прочел в какой то теме про bitmapdata.draw(); может быть это можно реализовать с его помощью? если да то покажите пример (я совсем новичок)

Wolsh 26.04.2009 23:26

А можно теперь это как-то на русский перевести? Я лично ничего вообще не понял, что дублируется, куда дублируется, куда плавно ("плавно" - понял)) двигается и что при этом зацикливается..

silin 27.04.2009 09:14

у beginBitmapFill есть аргумент matrtix, отвечающий за трансформацию исходной картинки..
плавное (реально скорее всего это будет не очень плавно) смещение можно сделать, например так
Код AS1/AS2:

import flash.display.BitmapData;
import flash.geom.*;
 
var pattern:BitmapData = BitmapData.loadBitmap("pic");//pic - id картинки в библиотеке
var vx:Number = 0;
var mtrx = new Matrix();
function onEnterFrame() {
        vx = 10*(0.5-_xmouse/Stage.width);
        mtrx.tx+=vx;
 
        _root.clear();
        _root.beginBitmapFill(pattern,mtrx);
        _root.lineTo(Stage.width,0);
        _root.lineTo(Stage.width,Stage.height);
        _root.lineTo(0,Stage.height);
        _root.lineTo(0,0);
        _root.endFill();
 
}


iGaF 27.04.2009 18:40

2Wolsh есть картинка я ее загружаю во флеш через MovieClipLoader. как мне потом сделать что бы она повторялась(а не заного загружалась) справа от загружаемой много много раз?)

ОльгаЮрьевна 27.04.2009 18:51

MovieClipLoader грузит картинку в клип, т.о. после загрузки картинки просто дублируйте ваш клип вместе с содержимым (т.е. с вашей картинкой):)

lexa2000lexa 27.04.2009 18:54

клипы не дублируються после того как в них что то загруженно.


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

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