Показать сообщение отдельно
Старый 05.08.2012, 21:10
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 9  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
нет, эти переменные возвращают 300 тоже
Сделал так:
Код AS3:
package components
{
	import spark.components.Image;
 
	public class ExtendedImage extends Image
	{
		public function ExtendedImage()
		{
			super();
		}
 
		override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
		{
			super.updateDisplayList(unscaledWidth, unscaledHeight);
			graphics.clear();
			graphics.lineStyle(1,0xff0000,1);
			graphics.drawRect(0,0,unscaledWidth,unscaledHeight);
		}
 
		[Bindable(event="scaledWidthChanged")]
		public function get scaledWidth():Number
		{
			var num:Number = this.width;
 
			if (scaleMode == "letterbox")
			{
				try
				{
					if ( (width > 0) && (sourceWidth < sourceHeight) )
					{
						num = (sourceWidth/sourceHeight) * height;                       
					}                   
				}
				catch(e:Error)
				{
					num = this.width;
				}
			}
 
			return num;
		}
	}
}
Знать ширину растянутой картинки мне нужно было чтобы в разных стэйтах эти картинки прилипали или к правому краю экрана или к левому. То есть если стэйт "normal" -левая картинка слева, правая справа, если стэйт "leftPerson" - правая остается справа, левая приезжает к правому краю стэйджа, если стэйт "rightPerson" - левая слева, а правая приезжает влево

Код AS3:
<s:states>
		<s:State name="normal"/>
		<s:State name="leftPerson"/>
		<s:State name="rightPerson"/>
	</s:states>
 
	<fx:Script>
		<![CDATA[
 
			[Bindable]
			protected var leftPersonX:Number=0;
 
			[Bindable]
			protected var rightPersonX:Number=0;
 
			override protected function stateChanged(oldState:String, newState:String, recursive:Boolean):void
			{
				super.stateChanged(oldState, newState, recursive);
				//leftPersonRight-=(personLeftImage.width-personLeftImage.scaledWidth);
 
				try
				{
					switch(newState)
					{
						case "normal":
							leftPersonX=0;
							rightPersonX=stage.stageWidth-personRightImage.width;
							break;
						case "leftPerson":
							personLeftImage.depth=1;
							personRightImage.depth=0;
							leftPersonX=stage.stageWidth-personLeftImage.scaledWidth;
							rightPersonX=stage.stageWidth-personRightImage.width;
							break;
						case "rightPerson":
							personLeftImage.depth=0;
							personRightImage.depth=1;
							leftPersonX=0;
							rightPersonX=-Math.abs((personRightImage.scaledWidth-personRightImage.width));
							break;
					}
				}
				catch(error:Error)
				{
				}
				trace(newState+"  leftPersonX="+leftPersonX);
			}
		]]>
	</fx:Script>
 
 
	<s:Group width="100%" height="100%">
		<components:ExtendedImage id="personLeftImage" 
						  x="{leftPersonX}"
						  source="@Embed(source='assets/personLeft.png')"
						  horizontalAlign="left"
						  verticalAlign="middle"
						  height="100%"
						  scaleMode="letterbox"
						  moveEffect="Move"/>
 
		<components:ExtendedImage id="personRightImage" 
				 		x="{rightPersonX}"
					   source="@Embed(source='assets/personRight.png')"
					   horizontalAlign="right"
					   verticalAlign="middle"
					   height="100%"
					   scaleMode="letterbox"
					   moveEffect="Move"/>
	</s:Group>
	<s:HGroup width="100%" bottom="0">
		<s:Button label="left" click="{currentState='leftPerson'}"/>
		<s:Button label="normal" click="{currentState='normal'}"/>
		<s:Button label="right" click="{{currentState='rightPerson'}}"/>
	</s:HGroup>