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

negasus 15.06.2009 20:51

Как использовать часть изображения?
 
Заранее прощу прощения, если тема обсуждалась - не нашёл.

Вопрос:

В библиотеке есть изображение, например 100*100 px
Необходмо программно получать из него часть изображения, например 10*10px с заданной позиции и вывести в кадр.

К сожалению программированием на Action Script только что начал заниматься, но буду рад любой информации. Желательно конечно пример кода и указать мануал - где об этом можно почитать.

Спасибо.

Добавлено через 6 минут
Если не понятно написал вопрос - пожалуйста уточните )
А то буду ждать сам не знаю чего =)

fljot 15.06.2009 21:12

ну посмотрите на класс BitmapData метод draw или просто на свойство scrollRect у DisplayObject

negasus 15.06.2009 21:18

Цитата:

Сообщение от fljot (Сообщение 828211)
ну посмотрите на класс BitmapData метод draw или просто на свойство scrollRect у DisplayObject

Если не сложно, подскажи пожалуйста где смотреть.
Я тоже думал что информация по BitmapData мне поможет, но не нашел этой информации (

silin 15.06.2009 21:48

>>подскажи пожалуйста где смотреть
обычно в хелпе..:)
Код AS1/AS2:

import flash.display.BitmapData;
import flash.geom.*;
 
var bmd:BitmapData = BitmapData.loadBitmap("image");//image - id картинки в библиотеке
var bmd1:BitmapData = new BitmapData(10, 10);
var rec:Rectangle = new Rectangle(0, 0, 10, 10);//нужная часть
bmd1.copyPixels(bmd, rec, new Point());
this.attachBitmap(bmd1, 0);


negasus 15.06.2009 21:53

silin

Спасибо, пошёл пробовать. На вид - всё просто и понятно )

PS: Вот понимаю что в хелпе )) Но возможно на этом форуме понятие "хелп" отличается от моего. Так как качал различную доку по AS2 - и почему то не нашел нужной инфо. Хотя и склоняюсь к тому, что не там или не так искал )

UPD:
Добавлено через 13 часов 8 минут
Продолжение вопроса :)

Часть картинки из библиотеки благополучно выводится, но в координатах 0, 0

Как один из выходов я попробовл сделать так:

Код AS1/AS2:

var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
...
mc._x = 30;
mc._y = 30;

Есть ли другое решение? Дело в том, что таких частей картинок будет около 100.

silin 16.06.2009 16:41

да нормальное решение, если надо этими фрагментами еще и манипулировать, то по другому наверное никак
если нужно просто показать, то можно создать большой прозрачный битмап и копировать фрагменты в нужную часть этого битмапа

negasus 16.06.2009 16:45

Цитата:

Сообщение от silin (Сообщение 828430)
если нужно просто показать, то можно создать большой прозрачный битмап и копировать фрагменты в нужную часть этого битмапа

К такому же самому решению пришел час назад ) Очевидное рядом. ))


Правда, к сожалению, созрел еще один вопрос :)

Пример:

Есть картинки .png с прозрачными частями. Но когда я их накладываю - вместо прозрачного фона получается просто белый цвет.

В библеотеке для моей картинки выставил "без сжатия PNG\GIF" но это ничего не дало

В чем может быть дело?

Волгоградец 16.06.2009 16:57

Значит .png не 32-х битная или в copyPixels() самый последний параметр поставили в false.

silin 16.06.2009 16:58

битмап, в который копируем должен быть прозрачным (по дефолту он 32-битный, но непрозрачный)
Код AS1/AS2:

var bmp:BitmapData = new BitmapData(10, 10, true, 0x0);


negasus 16.06.2009 17:02

Извиняюсь, надо было сразу указать:

Код AS1/AS2:

var map:BitmapData = new BitmapData(600, 400, true);
...
map.copyPixels(bmdSurf, rec, new Point(x,y));

Как видно, битмап у меня прозрачный. А вот про copyPixels - поясните пожалуйста?
Или про рязрадность png

Добавлено через 1 минуту
Свойства png-картинки: Глубина цвета: 32


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

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