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

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

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

Регистрация: Sep 2007
Сообщений: 36
Question Отражение объекта в AS3

Помогите, пожалуйста, решить такую задачу.
Есть Shape нарисованный в стиле:
Код:
TLine=new Shape;
TLine.graphics.beginFill(0x009900);
TLine.graphics.moveTo(StartPoints[0],StartPoints[1]);
TLine.graphics.lineTo(StartPoints[2],StartPoints[3]);
for(var j:int=0;j<NewPoints.length;j+=2)
{
   TLine.graphics.lineTo(NewPoints[j],NewPoints[j+1]);
}			
TLine.graphics.lineTo(StartPoints[4],StartPoints[5]);
TLine.graphics.lineTo(StartPoints[6],StartPoints[7]);
TClip.addChild(TLine);
Необходимо по Y создать его отражение.
В AS2 можно было просто проскейлить в минус, и поменять глубину.
А в AS3 же если просто его дублировать(присваивать) он отрисовывает новый но оригинал становится невидим. И ещо: скейл по Y в минус приводит к исчезновению объекта, который скейлю…
Очень нужна помощь.

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

Регистрация: Aug 2007
Сообщений: 467
http://www.adobe.com/devnet/flash/ar...class_as3.html

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

Регистрация: Sep 2007
Сообщений: 36
Вот более подробный код:
Код:
package main {
	import flash.display.MovieClip;
	import flash.display.Graphics;
	import flash.display.Shape;
	
	dynamic public class TEST extends MovieClip {;
	
	var TLine:Shape = new Shape();
	var DLine:Shape = new Shape();
	var TClip:MovieClip = new MovieClip();
	var DClip:MovieClip = new MovieClip();
	var StartPoints:Array;
	
	public function TEST()
	{
		StartPoints=new Array();
		{									
			StartPoints.push(50);StartPoints.push(25);
			StartPoints.push(50);StartPoints.push(50);
			StartPoints.push(400);StartPoints.push(50);
			StartPoints.push(400);StartPoints.push(25);					
		}
		TLine=new Shape;		
		
		TLine.graphics.beginFill(0x009900);
		TLine.graphics.moveTo(StartPoints[0],StartPoints[1]);
		TLine.graphics.lineTo(StartPoints[2],StartPoints[3]);		
		TLine.graphics.lineTo(StartPoints[4],StartPoints[5]);
		TLine.graphics.lineTo(StartPoints[6],StartPoints[7]);
		
		//TClip.addChild(TLine);	
		
		T1Clip.addChild(TLine);
		T2Clip.addChild(TLine);
	}
	}
}
Но это абсолютно неправильно. В T1Clip его невидно. Есть какие–небудь идеи – ОЧЕНЬ надо.

Старый 23.11.2007, 11:20
SSergeyS вне форума Посмотреть профиль Отправить личное сообщение для SSergeyS Найти все сообщения от SSergeyS
  № 4  
Ответить с цитированием
SSergeyS

Регистрация: Sep 2007
Сообщений: 36
Цитата:
Сообщение от 2morrowMan
Это не совсем то.
Во-первых там отражают битммап, и достаточно сложно. Мне надо сделать копию и отразить шейп или мувиклип. и желательно в несколько строк. Например как в AS2 – это делалось: дублируешь на другую глубину и скейлиш на -1.

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

Регистрация: Aug 2007
Сообщений: 467
Цитата:
Сообщение от SSergeyS
Вот более подробный код:
Но это абсолютно неправильно. В T1Clip его невидно. Есть какие–небудь идеи – ОЧЕНЬ надо.
Код:
T1Clip.addChild(TLine);
T2Clip.addChild(TLine);
Эхх, если бы в жизни так само - положил 100 баксов в один карман, а потом теже 100 баксов в другой и в обоих карманах по 100 баксов! Зашибись!

Старый 23.11.2007, 11:57
SSergeyS вне форума Посмотреть профиль Отправить личное сообщение для SSergeyS Найти все сообщения от SSergeyS
  № 6  
Ответить с цитированием
SSergeyS

Регистрация: Sep 2007
Сообщений: 36
Согласен. Но во флексе это работало )))
Жаль что во флеше это не так. И все же, как это сделать????
Это явно должно быть просто.


Последний раз редактировалось SSergeyS; 23.11.2007 в 12:01.
Старый 23.11.2007, 12:42
2morrowMan вне форума Посмотреть профиль Отправить личное сообщение для 2morrowMan Найти все сообщения от 2morrowMan
  № 7  
Ответить с цитированием
2morrowMan
 
Аватар для 2morrowMan

Регистрация: Aug 2007
Сообщений: 467
Один из вариантов:
Код:
function createShape():Shape
{
	var shape:Shape = new Shape();
 
	shape.graphics.beginFill(0x009900);
	shape.graphics.moveTo(StartPoints[0],StartPoints[1]);
	shape.graphics.lineTo(StartPoints[2],StartPoints[3]);
	shape.graphics.lineTo(StartPoints[4],StartPoints[5]);
	shape.graphics.lineTo(StartPoints[6],StartPoints[7]);
	return shape;
}

T1Clip.addChild(createShape());
T2Clip.addChild(createShape());

Старый 23.11.2007, 15:13
SSergeyS вне форума Посмотреть профиль Отправить личное сообщение для SSergeyS Найти все сообщения от SSergeyS
  № 8  
Ответить с цитированием
SSergeyS

Регистрация: Sep 2007
Сообщений: 36
Сделал пока вот-так:
Код:
package main {
	import flash.display.MovieClip;
	import flash.display.Graphics;
	import flash.display.Shape;
	import flash.events.MouseEvent;
	
	dynamic public class TEST extends MovieClip {;
	
	var TLine:Shape = new Shape();
	var DLine:Shape = new Shape();
	var TClip:MovieClip = new MovieClip();
	var DClip:MovieClip = new MovieClip();
	var StartPoints:Array;
	
	private function Click(e:MouseEvent):void
	{
		TLine=new Shape;
		TLine.graphics.beginFill(0x009900);
		TLine.graphics.moveTo(StartPoints[0],StartPoints[1]*-1);
		TLine.graphics.lineTo(StartPoints[2],StartPoints[3]*-1);
		TLine.graphics.lineTo(50,15*-1);
		TLine.graphics.lineTo(StartPoints[4],StartPoints[5]*-1);
		TLine.graphics.lineTo(StartPoints[6],StartPoints[7]*-1);
		T1Clip.addChild(TLine);

	}
	public function TEST()
	{
		Button1.addEventListener(MouseEvent.CLICK, Click);
		StartPoints=new Array();
		{									
			StartPoints.push(0);StartPoints.push(0);
			StartPoints.push(0);StartPoints.push(25);			
			StartPoints.push(400);StartPoints.push(25);
			StartPoints.push(400);StartPoints.push(0);					
		}
		TLine=new Shape;		
		
		TLine.graphics.beginFill(0x009900);
		TLine.graphics.moveTo(StartPoints[0],StartPoints[1]);
		TLine.graphics.lineTo(StartPoints[2],StartPoints[3]);
		TLine.graphics.lineTo(50,15);
		TLine.graphics.lineTo(StartPoints[4],StartPoints[5]);
		TLine.graphics.lineTo(StartPoints[6],StartPoints[7]);	
		
		T1Clip.addChild(TLine);		
	}
	}
}
работает, но не очень изящно....

Старый 23.11.2007, 15:19
SSergeyS вне форума Посмотреть профиль Отправить личное сообщение для SSergeyS Найти все сообщения от SSergeyS
  № 9  
Ответить с цитированием
SSergeyS

Регистрация: Sep 2007
Сообщений: 36
блин не обновил страницу - а вообще практически аналогично! (только мне надо отражение)

А еще варианты?

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

Регистрация: Aug 2007
Сообщений: 467
shape.scaleY = -1;

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

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

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


 


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


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