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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.10.2009, 17:24
3Desian вне форума Посмотреть профиль Отправить личное сообщение для 3Desian Найти все сообщения от 3Desian
  № 1  
Ответить с цитированием
3Desian
 
Аватар для 3Desian

Регистрация: Mar 2007
Сообщений: 142
Отправить сообщение для 3Desian с помощью ICQ
Tools Указать размер текстуры

Есть Plane() - квадрат. В качестве материала используется BitmapFileMaterial, в который подгружается jpg. Сам jpg не квадратный. Хочу натянуть текстуру на Plane(), сохранив при этом пропорции jpg-файла.
Код AS3:
public function changeMat(evt:FileLoadEvent): void
	{	
		var menu:DisplayObject3D = scene.getChildByName(photoElements) as DisplayObject3D;
 
		for each ( var item:DisplayObject3D in menu.children)
				{
					var mat:BitmapFileMaterial = evt.currentTarget as BitmapFileMaterial;
 
					var bmd:Bitmap = evt.currentTarget as Bitmap ;
					trace("BITMAP!!!!!!!="+bmd);
 
					if (mat.name==item.name)
					{
						item.material=mat;
						align(bmd,item);
					}
 
				}
		}
function align(bmp:Bitmap, plane:DisplayObject3D):void 
		{
   			var ratio:Number = Math.min(SIZE / bmp.width, SIZE / bmp.height );
 
   		 	bmp.scaleX = bmp.scaleY = ratio;
    			bmp.x = plane.x + (SIZE - bmp.width) / 2;
    			bmp.y = plane.y + (SIZE - bmp.height) / 2;
		}
Трассировка выдаёт "BITMAP!!!!!!!=null", а функция align соответственно не работает. Как же быть? Подскажите пожалуйста.

Старый 14.10.2009, 17:59
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 2  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
А Вы уверены, что evt.currentTarget это Bitmap?
Кого подписываете?
__________________
Griver

Старый 14.10.2009, 18:00
3Desian вне форума Посмотреть профиль Отправить личное сообщение для 3Desian Найти все сообщения от 3Desian
  № 3  
Ответить с цитированием
3Desian
 
Аватар для 3Desian

Регистрация: Mar 2007
Сообщений: 142
Отправить сообщение для 3Desian с помощью ICQ
Это Bitmap. JPG грузится с указанного в xml места.
Вот так вот нет ошибки, но и текстура не масштабируется.
Код AS3:
public function creationMenu ():void
		{	
var url:String = stroke.@picture;
 
var m:BitmapFileMaterial = new BitmapFileMaterial ();
m.doubleSided = true; 
m.interactive=true;
m.smooth=true;
m.addEventListener(FileLoadEvent.LOAD_COMPLETE, changeMat);
m.name=item.name;
m.texture =url;
}
public function changeMat(evt:FileLoadEvent): void
{	
	var menu:DisplayObject3D = scene.getChildByName(photoElements) as DisplayObject3D;
	for each ( var item:DisplayObject3D in menu.children)
	{
 
	var mat:BitmapFileMaterial = evt.currentTarget as BitmapFileMaterial;
	var bmd:Bitmap = new Bitmap(mat.bitmap);
 
 
	bmd.scaleX=0.5;
	trace("BITMAP!!!="+bmd.scaleX);
	if (mat.name==item.name)
	{						
	item.material=mat;
	}
 
	align(bmd,item);
	}
}
 
function align(bmp:Bitmap, plane:DisplayObject3D)
{
   	var ratio:Number = Math.min(SIZE / bmp.width, SIZE / bmp.height );
 
   	bmp.scaleX = bmp.scaleY = ratio;
    	bmp.x = plane.x + (SIZE - bmp.width) / 2;
    	bmp.y = plane.y + (SIZE - bmp.height) / 2;
}


Последний раз редактировалось 3Desian; 14.10.2009 в 18:03.
Старый 14.10.2009, 18:42
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 4  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
А Вы не видите противоречия в строках:
Код AS3:
...
var mat:BitmapFileMaterial = evt.currentTarget as BitmapFileMaterial;
var bmd:Bitmap = evt.currentTarget as Bitmap ;
...
__________________
Griver

Старый 15.10.2009, 09:11
3Desian вне форума Посмотреть профиль Отправить личное сообщение для 3Desian Найти все сообщения от 3Desian
  № 5  
Ответить с цитированием
3Desian
 
Аватар для 3Desian

Регистрация: Mar 2007
Сообщений: 142
Отправить сообщение для 3Desian с помощью ICQ
Уже исправил. Обратите пожалуйста внимание на код в третьем сообщении. Там теперь:
Код AS3:
var mat:BitmapFileMaterial = evt.currentTarget as BitmapFileMaterial;
var bmd:Bitmap = new Bitmap(mat.bitmap);
Затем указываю размер у Bitmap
Код AS3:
bmd.scaleX=0.5;
	trace("BITMAP!!!="+bmd.scaleX);
В результате Flash ошибки не выдаёт, трэйсер выдаёт "BITMAP!!!=0.5" но изменения на плэйне не отображает. Что такое опять?
Мне всего то нужно в квадратные плэйны вписать прямоугольные JPG не меняя их пропорций. Сейчас они растягиваются по всему квадрату тем самым искажаются.
Может мне вообще не так нужно делать?


Последний раз редактировалось 3Desian; 15.10.2009 в 11:45.
Создать новую тему Ответ Часовой пояс GMT +4, время: 02:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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