|
|
|||||
меценат
|
Привет
вот на вскидку =) package { import flash.display.Sprite; import flash.display.Stage; import flash.display.DisplayObject; import flash.events.Event; import flash.ui.Mouse; [SWF(width='500', height='400', backgroundColor='#669999', frameRate='31')] /*____________________________________________________*/ public class Rotations extends Sprite { private var spriteQuantity: Number = 7; private var spritePlayer: Sprite; private var widthParabola: Number = 150; private var heightParabola: Number = 36; private var positionParabolaSpriteX: Number = 250; private var positionParabolaSpriteY: Number = 200; private var reductionScale: Number = 1.4; private var speedRotations: Number = 40; private var oneRadian: Number = Math.PI/180; private var degreeParabola: Number = 0; private var degreeParabolaOneRadian: Number = degreeParabola*oneRadian; private var spriteSectorParabola: Number = Math.floor(360/spriteQuantity); private var workArray: Array = new Array(); private var positionArrayX: Array = new Array(); public function Rotations() { drawPlayer(); numX(); } private function drawPlayer(): void { for (var i:int = 0; i < spriteQuantity; i++) { spritePlayer = new Sprite; spritePlayer.graphics.beginFill(0xFFFF00); spritePlayer.graphics.drawCircle(0, 0, 10); spritePlayer.graphics.endFill(); spritePlayer.name = "spritePlayer" + i; addChild(spritePlayer); workArray.push(i * spriteSectorParabola); spritePlayer.addEventListener(Event.ENTER_FRAME, enterFrameHandler); trace(workArray); } } private function numX(): void { for (var z:int = 0; z < spriteQuantity; z++) { positionArrayX.push(z); } trace(positionArrayX); } private function enterFrameHandler(event:Event): void { if (stage.mouseX < positionParabolaSpriteX) { workArray[positionArrayX[parseInt(event.target.name.substr(12))]] += (stage.mouseX - positionParabolaSpriteX) / speedRotations; } else if (stage.mouseX > positionParabolaSpriteX) { workArray[positionArrayX[parseInt(event.target.name.substr(12))]] -= (positionParabolaSpriteX - stage.mouseX) / speedRotations; } var thisParabolaX: Number = new Number; thisParabolaX = widthParabola * Math.cos(workArray[positionArrayX[parseInt(event.target.name.substr(12))]] * oneRadian); var thisParabolaY: Number = new Number; thisParabolaY = heightParabola * Math.sin(workArray[positionArrayX[parseInt(event.target.name.substr(12))]] * oneRadian); event.target.x = positionParabolaSpriteX + thisParabolaX * Math.cos(degreeParabolaOneRadian) - thisParabolaY * Math.sin(degreeParabolaOneRadian); event.target.y = positionParabolaSpriteY + thisParabolaX * Math.sin(degreeParabolaOneRadian) + thisParabolaY * Math.cos(degreeParabolaOneRadian); } } }
__________________
Безвыходных положений небывает © Барон Мюнхаузен=)Исходники Последний раз редактировалось D12; 03.07.2008 в 01:50. |
|
|||||
Регистрация: Mar 2007
Адрес: Ужгород (UA)
Сообщений: 62
|
Здравствуй. Спасибо, будем разбиратся, только вот вижу код в два раза больше. Но спасибо и на этом, попробую для своего взять из твоего немного ума, думаю там есть чему поучится.
Цитата:
Вот даю рабочий пример карусели на AS1/AS2, там видно что за angle и еще многое видно. И вот еще даю ту карусель что у нас получилась на AS3, чтоб увидеть наглядно что и как. Кстати уже скорость карусели указывает положение курсора мышки. Последний раз редактировалось N1ka; 03.07.2008 в 12:54. |
|
|||||
ИЗУЧАЙ!!)
изучай студент ) оба класса подробно изучи
Удачи в начинаиях) а проблема именно в геометрии у тебя была) и обрати внимание на то что такое angle! я блин до этого не вдовался в подробности) англе отвечает за расстановку по круга итемов) а я думал те надо сам итем повернуть ))) |
|
|||||
меценат
|
вот есть не большой еще пример
В подобных карусельках весь принцип базируется на следующей формуле: почитай
__________________
Безвыходных положений небывает © Барон Мюнхаузен=)Исходники |
|
|||||
Регистрация: Mar 2007
Адрес: Ужгород (UA)
Сообщений: 62
|
О, спасибо вам, друзья. Буду стараться так, чтобы больше не задавать вопросов, а самому быть способным отвечать на них, но у меня впереди еще много планов...
|
|
|||||
Дерзай)
Удачи ) |
|
|||||
Регистрация: Mar 2007
Адрес: Ужгород (UA)
Сообщений: 62
|
Вернулся все-таки.
Но тут уже аномалия для меня, смотрите сами: Есть 10 итемов, все сидят на своих местах кроме одного, т.е. если дергать мышкой туда-сюда чтобы итемы дергались также в одну сторону и потом резко в другую, то выделяется один итем, он со старта поясвляется самый правый. Так вот, если дергать туда-сюда, то он будто по льду ездит, т.е. не сидит на своем месте, все дергаются резко, а этого одного итема заносит. Этой проблемы небыло когда к мувиклипе item в присвоенном классе main.Item была написана функция с просчетом движения этих итемов. Но когда я эту функцию перенес по причине в класс Carousel который присвоен Document class, то вот появилась такая проблема. Это не должно быть, почему оно так и как его устранить? Вот мувик: Последний раз редактировалось N1ka; 04.07.2008 в 20:59. |
|
|||||
такой своего рода разрыв цепи.. кидай проект, ща посмотрю, все равно делать нефик)
|
|
|||||
Регистрация: Mar 2007
Адрес: Ужгород (UA)
Сообщений: 62
|
Вот, там уже немного изменений.
|
|
|||||
честно говоря проблемы не увидел! все вроде норм...
Слушай хочешь бесплатный совет! он тебе потом оч поможет) |
Часовой пояс GMT +4, время: 00:02. |
|
« Предыдущая тема | Следующая тема » |
|
|