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

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

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

Регистрация: Jan 2006
Сообщений: 18
По умолчанию Назначить прозрачный цвет для загруженной картинки

Интуитивно понимаю, что должно решаться как-то просто, но как - не пойму.
Есть картинка jpeg - рисунок на черном (0x000000) фоне. После runtime загрузки этой картинки в Image необходимо черный фон сделать прозрачным. Как?

Старый 05.03.2008, 14:19
Mr. Fixit вне форума Посмотреть профиль Найти все сообщения от Mr. Fixit
  № 2  
Ответить с цитированием
Mr. Fixit
Banned

Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
BitmapData.
thresold.

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

Регистрация: Jan 2006
Сообщений: 18
Пршу прощения, а можно конкретную строчку кода? Ведь не так много прошу.

Старый 05.03.2008, 16:35
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 4  
Ответить с цитированием
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
Код:
/**
 * @author ivan.dembicki@gmail.com
 */
package {
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.geom.Point;
	import flash.net.URLRequest;
	import flash.system.ApplicationDomain;
	import flash.system.LoaderContext;		

	public class ThreshholdSample extends Sprite {

		public static function addTransparency(bmp : BitmapData, transparentColor : uint = 0) : BitmapData {
			const newBmp:BitmapData = new BitmapData(bmp.width, bmp.height, true);
			newBmp.draw(bmp);
			newBmp.threshold(newBmp, bmp.rect, new Point(), "==", transparentColor);
			return newBmp;
		}
		
		private static const PICTURE_URL : String = "dimpiax.png";
		private static const TRANSPARENT_COLOR : uint = 0xFFF1F1EF;
		
		private const pictureLoader : Loader = new Loader();

		public function ThreshholdSample() {
			initInstance();
		}
		
		private function initInstance() : void {
			addChild(pictureLoader);
			pictureLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onPictureLoaded);
			const request : URLRequest = new URLRequest(PICTURE_URL);
			const context : LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
			pictureLoader.load(request, context);
		}
		
		private function onPictureLoaded(event : Event) : void {
			const picture : Bitmap = pictureLoader.content as Bitmap;
			picture.bitmapData = addTransparency(picture.bitmapData, TRANSPARENT_COLOR);
		}
		
	}
}


Последний раз редактировалось Iv; 05.03.2008 в 16:37.
Старый 05.03.2008, 18:58
Utes вне форума Посмотреть профиль Отправить личное сообщение для Utes Найти все сообщения от Utes
  № 5  
Ответить с цитированием
Utes

Регистрация: Jan 2006
Сообщений: 18
Положил Image, назвал img1, откорректировал соответственно для своей картинки PICTURE_URL и TRANSPARENT_COLOR, добавил пследней строчкой в onPictureLoaded следующее:

Application.application.img1.source = picture;
- не работает. Картинка выводится как есть, без прозрачности.

Старый 05.03.2008, 19:33
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 6  
Ответить с цитированием
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
Application.application.img1.source = picture;
- очень загадочна эта строка без остального кода.

Старый 05.03.2008, 19:59
Utes вне форума Посмотреть профиль Отправить личное сообщение для Utes Найти все сообщения от Utes
  № 7  
Ответить с цитированием
Utes

Регистрация: Jan 2006
Сообщений: 18
вот собственно и весь код:

Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
	creationComplete="Init()">
	<mx:Script>
		<![CDATA[
			import src.ThreshholdSample;
			
			private function Init():void{
				new ThreshholdSample();
			}
		]]>
	</mx:Script>
	<mx:Image id="img1" width="350" height="205"/>
</mx:Application>
ThreshholdSample:

Код:
// ActionScript file
package src{
        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.display.Loader;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.geom.Point;
        import flash.net.URLRequest;
        import flash.system.ApplicationDomain;
        import flash.system.LoaderContext;
        import mx.core.Application;              

         // @author ivan.dembicki@gmail.com
        public class ThreshholdSample extends Sprite {

                public static function addTransparency(bmp : BitmapData, transparentColor : uint = 0) : BitmapData {
                        var newBmp:BitmapData = new BitmapData(bmp.width, bmp.height, true);
                        newBmp.draw(bmp);
                        newBmp.threshold(newBmp, bmp.rect, new Point(40,40), "==", transparentColor);
                        return newBmp;
                }
                
                private static const PICTURE_URL : String = "fishka_light_default.jpg";//"dimpiax.png";
                private static const TRANSPARENT_COLOR : uint = 0x000000;
                
                private const pictureLoader : Loader = new Loader();

                public function ThreshholdSample() {
                        initInstance();
                }
                
                private function initInstance() : void {
                        addChild(pictureLoader);
                        pictureLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onPictureLoaded);
                        const request : URLRequest = new URLRequest(PICTURE_URL);
                        const context : LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
                        pictureLoader.load(request, context);
                }
                
                private function onPictureLoaded(event : Event) : void {
                        const picture : Bitmap = pictureLoader.content as Bitmap;
                        const bmp : BitmapData = picture.bitmapData;
                        picture.bitmapData = addTransparency(bmp, TRANSPARENT_COLOR);
                        
                        Application.application.img1.source = picture;
                        
                }
                
        }
}


Последний раз редактировалось Utes; 05.03.2008 в 20:01.
Старый 05.03.2008, 20:05
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 8  
Ответить с цитированием
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
Попробуй пример без использования Flex - создай рядом с ThreshholdSample FLA файл и руту назначь класс ThreshholdSample.
Проверь, правильно ли ты указал цвет. Он должен содержать альфу.

Старый 05.03.2008, 20:09
Utes вне форума Посмотреть профиль Отправить личное сообщение для Utes Найти все сообщения от Utes
  № 9  
Ответить с цитированием
Utes

Регистрация: Jan 2006
Сообщений: 18
А вот и собственно картинка.
Изображения
 

Старый 05.03.2008, 22:33
badun вне форума Посмотреть профиль Отправить личное сообщение для badun Найти все сообщения от badun
  № 10  
Ответить с цитированием
badun

Регистрация: Dec 2007
Сообщений: 269
для такой картинки наверное просто blendMode = "screen" подойдет

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

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

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


 


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


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