Форум программистов, компьютерный форум, киберфорум
Наши страницы
ActionScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Nebiros
33 / 33 / 16
Регистрация: 23.03.2010
Сообщений: 2,014
1

Замостить прямоугольник картинками 2х видов по схеме

03.10.2013, 18:57. Просмотров 1042. Ответов 8
Метки нет (Все метки)

как наиболее простым методом вывести рисунок на экран? (к примеру квадратную картинку 32х32 пкс)

и вопрос второй - если мне нужно вывести 16 элементов (4х4 квадратных картинок), к примеру двух разновидностях такого порядка:
0010
1011
1010
0011
то при их выводе их нужно как то объединять в один целый рисунок? (кое где вычитал что не правильно делать много объектов которые статические)

Добавлено через 1 минуту
картинка есть уже в проекте в библиотеке, теперь как ее вывести на экран в цикле в нужных координатах...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2013, 18:57
Ответы с готовыми решениями:

Замостить боковые полосы сайта слева и справа разными картинками
Доброго времени суток, уважаемые товарищи. У меня возникла проблема с замосткой двух разных...

Как замостить текстурой прямоугольник?
Имеется уже созданная (скорее всего загруженная из файла) текстура на hdc1, она известного размера...

Количество способов замостить прямоугольник M*N прямоугольниками M*1 и 1*M
Добрый день! Подскажите пожалуйста, как решить данную задачу: Дан прямоугольник M*N. Нужно...

Вычислить по вводимым данным площадь фигур разных видов - треугольник, прямоугольник, окружность
Написать программу вычисляющую по вводимым данным площадь фигур разных видов (треугольник,...

Вывести на экран "прямоугольник", образованный из двух видов символов.
Ребята привет! есть задачка -- Вывести на экран "прямоугольник", образованный из двух видов...

8
TanaTiX
Модератор
2798 / 1655 / 168
Регистрация: 19.02.2011
Сообщений: 6,018
Завершенные тесты: 2
03.10.2013, 19:36 2
Есть методы простые, сложные, а есть целесообразные. И выбирать нужно именно то, что подходит в каждой конкретной ситуации.
Учитывая вышесказанное, могу предложить 2 варианта:
1) создавать картинки в цикле и добавлять их на сцену в цикле одним объектом.
2) создать одну битмапдату (BitmapData), куда отрисовывать нужные изображения, потом на ее основе создать Bitmap и поместить ее на сцену.

Не по теме:

При желании можно извратиться на еще несколько вариантов или несколько изменить вышеуказанные.

1
Magikl
6 / 6 / 0
Регистрация: 23.11.2011
Сообщений: 52
03.10.2013, 19:49 3
1)
ActionScript 3
1
2
3
4
5
6
7
8
9
//перед конструктором
[Embed(source="pig.png")]
private var pigC:Class;
private var pigPng:BitmapAsset=new pigC();
// где-то внутри
addChild(pigPng);
// координаты 
pigPng.x=50;
pigPng.y=50;
2) Сам недавно столкнулся с похожей штукой(не знаю на счет не правильности, но это очень неудобно).
Вычитал про тайлсеты.
Проще объединить 2 картинки в 1(это и называется тайлсет, вроде бы).
А потом вырезать из этой картинки нужные куски.
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//загрузили картинку как в 1). назовем tailSet
 
//в конструкторе:
createMap();
getMap();
//
private function createMap():void
        {
            var imageBMP:BitmapData =mapTestPng.bitmapData
// column, stroke- количество строк и столбцов на которое разбиваем картинку( в моем примере на 2х2)
            sliceWidth=tailSet.width/column; 
            sliceHeight=tailSet.height/stroke;
//двухмерный массив для удобства
            slices=new Array(stroke);
            var k:int=0
            for (var i:int=0;i<stroke;i++)
            {
                for(var j:int=0;j<column;j++)
                {
                    var sliceBmp:BitmapData=new BitmapData(sliceWidth,sliceHeight,false);
                //вот тут вырезаем из картинки прямоугольники размером 30 на 30(картинка изначально 60на60)
    sliceBmp.copyPixels(imageBMP,new Rectangle(j*sliceWidth,i*sliceHeight,sliceWidth,sliceHeight),new Point());
                    var slice:Bitmap=new Bitmap(sliceBmp);
                    slices[k]=slice;
                    k++;
                }
            }
        }
        private function getMap():void
        {
//располагаем куски картинки в нужном порядке
            var coordArray:Array=new Array(2,3,1,4,4,3);
            var mapArray:Array=new Array(6);
            var s:int=0;
//массив столбцов
            for (var i:int=0;i<3;i++)
            {
//строк
                for (var j:int=0;j<2;j++)
                {
                    var slice:Bitmap=new Bitmap(slices[coordArray[s]-1].bitmapData);
                    mapArray[s]=slice;
                    mapArray[s].x=i*(sliceWidth);
                    mapArray[s].y=j*(sliceHeight);
                    addChild(mapArray[s]);
                    s++;
                }
            }
        }
если картинка лежит в библиотеке, к ней можно обратиться так:
ActionScript 3
1
2
private var png:MovieClip=new (название картинки)()
addChild(png);
1
Nebiros
33 / 33 / 16
Регистрация: 23.03.2010
Сообщений: 2,014
03.10.2013, 19:53  [ТС] 4
Цитата Сообщение от TanaTiX Посмотреть сообщение
2) создать одну битмапдату (BitmapData), куда отрисовывать нужные изображения, потом на ее основе создать Bitmap и поместить ее на сцену.
вот с данным классом я смотрел пример но у меня не получилось его запустить, так же пытался не в цикле а просто одну картинку запустить тоже не получилось, вполне вероятно что проблема в том как я вызываю функцию в котором находится эта функция...
вот пробовал в основном классе запустить просто фигуру нарисованную
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package general {
  import flash.display.Sprite;
  import general.Someclass;
  flash.display.Graphics
    
  public class App extends Sprite{
    public function App(){
      var square:Sprite = new Sprite();
      square.graphics.beginFill(0xFF);
      square.graphics.drawRoundRect(0, 0, 100, 50, 10, 10);
      square.graphics.endFill();
      addChild(square);
      }
    // Someclass.test(); - а так потом пытался вызвать
    }
  }
то есть так работает , а когда я эту конструкцию засунул к класс Someclass в метод test();

ActionScript 3
1
2
3
4
5
6
7
8
 public class Someclass extends Sprite{
    public function test(){
      var square:Sprite = new Sprite();
      square.graphics.beginFill(0xFF);
      square.graphics.drawRoundRect(0, 0, 100, 50, 10, 10);
      square.graphics.endFill();
      addChild(square);
      }
и пытался вызвать через Someclass.test(); уже не работало, не совсем понял просто последовательность это всего...
0
Magikl
6 / 6 / 0
Регистрация: 23.11.2011
Сообщений: 52
03.10.2013, 19:56 5
Забыл про картинку.
0
Изображения
 
TanaTiX
Модератор
2798 / 1655 / 168
Регистрация: 19.02.2011
Сообщений: 6,018
Завершенные тесты: 2
03.10.2013, 19:59 6
Magikl, в вашем примере создается слишком много BitmapData.
Nebiros, только что речь шла про картинки (растровые?), а теперь начинаем обсуждать векторное программное рисование. Можно еще раз четко обозначить, что именно необходимо?
0
Magikl
6 / 6 / 0
Регистрация: 23.11.2011
Сообщений: 52
03.10.2013, 20:07 7
Цитата Сообщение от TanaTiX Посмотреть сообщение
Magikl, в вашем примере создается слишком много BitmapData.
[
Это не мой пример, я его где-то нашел.

Не совсем по этой теме, но с ней тоже связано.(другую смысла нет создавать)
Мне нужно из 1-й картинки, порезанной на битмапы, создать два слоя(или больше). Но в справочнике adobe говорится, что (если я правильно понял) битмапы нельзя накладывать друг на друга. Накладывать можно, но теряется прозрачность(пример: есть куст и кубик травы, нужно поставить куст на траву, но видно только куст(а за ним белый фон(хотя он должен быть прозрачным)). Я знаю, что это как-то легко решается, но не могу найти как. Подскажите, пожалуйста, что-нибудь по данному вопросу.
0
Nebiros
33 / 33 / 16
Регистрация: 23.03.2010
Сообщений: 2,014
03.10.2013, 20:10  [ТС] 8
Цитата Сообщение от TanaTiX Посмотреть сообщение
только что речь шла про картинки (растровые?), а теперь начинаем обсуждать векторное программное рисование. Можно еще раз четко обозначить, что именно необходимо?
да я вижу что я не правильно вызываю саму функцию класса, будь то картинка или векторное рисование, поспешил я, надо толком разобраться с правильным вызовом функции класса.
0
TanaTiX
Модератор
2798 / 1655 / 168
Регистрация: 19.02.2011
Сообщений: 6,018
Завершенные тесты: 2
03.10.2013, 21:18 9
Цитата Сообщение от Magikl Посмотреть сообщение
Я знаю, что это как-то легко решается
Да, легко, создается прозрачная битмапа (точнее битмапдата, на основе которой создается битмапа(ы)), в которую рисуются нужные элементы (естественно, также полупрозрачные, обычно на основании изображений png)
0
03.10.2013, 21:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2013, 21:18

В озере водится несколько видов рыб. Три рыбака поймали рыб, представляющих некоторые из имеющихся видов
В озере водится несколько видов рыб. Три рыбака поймали рыб, представляющих некоторые из имеющихся...

В массиве записана информация о стоимости 30 видов товара. Определить стоимость двух самых дорогих видов товара
В массиве записана информация о стоимости 30 видов товара. Определить стоимость двух самых дорогих...

План видов характеристик в качестве характеристики значения плана видов характеристик
всем привет. я вроде как чета понимаю в 1с и казалось бы херли там план видов характеристик - все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru