Показать сообщение отдельно
Старый 09.07.2008, 13:30
N1ka вне форума Посмотреть профиль Отправить личное сообщение для N1ka Найти все сообщения от N1ka
  № 36  
Ответить с цитированием
N1ka
 
Аватар для N1ka

Регистрация: Mar 2007
Адрес: Ужгород (UA)
Сообщений: 62
Хотел сделать код таким как советовал ramshteks, сделал, и проблема с тем итемом что велял исчезла. Но, но я никак не могу сделать чтобы работало перекрытие (функция sortBySize) после того как немного изменил код. Я так понимаю что или в Item вызывать ее нужно из Carousel, или если ее поместить в Item, тогда нужно как-то найти там itemArray что в Carousel, что мне кажеться странным. Короче говоря, я незнаю как такое реализовать, искал - не нашел, может потому что незнал что толком искать.

Вот, посмотрите сами:

Document class: main.Carousel
Код:
package main {
	import flash.display.MovieClip;
	public class Carousel extends MovieClip {
		private var numOfItems:uint = 10;
		private var itemArray:Array = new Array;
		public function Carousel() {
			for (var i:uint = 0; i < numOfItems; i++) {
				var item:Item = new Item();
				item.angl = i * ((Math.PI * 2) / numOfItems);
				itemArray.push(item);
				addChild(item);
			}
		}
		//Работало когда тут стояла функция enterFrameHandler
		/*public function sortBySize():void {
			itemArray.sortOn("scaleX", Array.DESCENDING | Array.NUMERIC);
			itemArray.reverse();
			for(var i:uint = 0; i < itemArray.length; i++) {
				var item:Item = itemArray[i];
				setChildIndex(item, i);
			}
		}*/
	}
}
main.Item
Код:
package main {
	import flash.display.MovieClip;
	import flash.events.Event;
	public class Item extends MovieClip {
		public var angl:Number;
		static var radiusX:uint = 250;
		static var radiusY:uint = 75;
		private var centerX:Number = 400;
		private var centerY:Number = 300;
		private var speed:Number = 0.05;
		public function Item() {
			masker.cacheAsBitmap = reflection.cacheAsBitmap = true;
			reflection.mask = masker;
			addEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}
		private function enterFrameHandler(event:Event):void {
			x = Math.cos(angl) * radiusX + centerX;
			y = Math.sin(angl) * radiusY + centerY;
			var scale:Number = y / (centerY + radiusY);
			scaleX = scaleY = scale;
			angl += speed;
			speed = (stage.mouseX - centerX) / 6000;
			//Нужно как-то сюда, чтобы работало
			//sortBySize();
		}
	}
}
Ну и еще второй вопрос: как в main.Item найти stage.stageWidth и stage.stageHeight?