|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Задание rotationY рушит мой PerspectiveProjection
Проблема в следующем. Есть спрайт, внутри которого несколько спрайтов с разными значениями rotationY/X. Сделан в IDE.
Флешка резиновая, а спрайт должен центрироваться, поэтому я повесил на сам спрайт PerspectiveProjection с нужным мне ванишинг поинтом и углом перспективы (я так понимаю, тогда перспектива для всего спрайта начинает рассчитываться отдельно, т.е. не как у других спрайтов на сцене, которым не задавали перспективу через as) и спокойно его центрирую по ресайзу. Проблема в следующем - как только я меняю у спрайта свойство rotationY на любое значение (даже на то, которое уже и так стоит - для спрайта оно равно нулю, но это не так важно), то со спрайтом происходит что-то странное. Похоже на то, что перспектива для него сбрасывается на ту, что задана по умолчанию для всей флешки. Подскажите, как быть, пожалуйста. Желательно без использования внешних библиотек для 3д. Плеер десятый.
__________________
Дело не в тебе |
|
|||||
только предположение: perspectiveProjection не сбрасывается ( с чего бы ?), но в силу того при повороте контейнера дети тоже поворачиваются (относительно точки регистрации контейнера) видим нечто, возможно и странное..
внятный пример бы, чтоб не фантазировать |
|
|||||
Прикрепил пример в fla, там в коде нужно расскомментировать одну строку, чтобы увидеть проблему (см. комментарии в коде).
Для меня поведение действительно загадочно
__________________
Дело не в тебе |
|
|||||
Ну, там приложен swf, чтобы можно было представить, как выглядит.
Код в кадре там вот такой лежит: stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; stage.addEventListener(Event.RESIZE, this.stageResizeHandler) //задаем нужную 3д проекцию контенту страницы var projection:PerspectiveProjection=new PerspectiveProjection(); projection.projectionCenter = new Point(100,100); projection.fieldOfView = 55 this.content.transform.perspectiveProjection = null this.content.transform.perspectiveProjection = projection; function stageResizeHandler(event : Event) : void { this.content.x = this.stage.stageWidth/2 } trace(this.content.rotationY) // выдаст 0 //расскомментируйте эту строку, чтобы увидеть проблему //this.content.rotationY=0 Если есть cs4, могу пересохранить для него.
__________________
Дело не в тебе |
|
|||||
Вот для cs4.
Чтобы увидеть проблему нужно еще поресайзить окно по горизонтали.
__________________
Дело не в тебе |
|
|||||
не удается до конца вкурить логику адобов с этим 3Д,
такое вот есть предположение: без определения какого-нибудь из "3Д-шных" свойств (rotationY в этом случае) matrix3D объекта не определена, и определение perspectiveProjection не имеет смысла, т.е. ситуация как раз обратная: после определения rotationY perspectiveProjection не сбрасывается в состояние родителя (stage), а наоборот начинает работать а 'ерзает' при ресайзе из-за того, что координаты объекта меняются, а вьюпойнт нет если менять и его тоже, то вроде бы все адекватно var projection:PerspectiveProjection = new PerspectiveProjection(); projection.projectionCenter=new Point(content.x,content.y); projection.fieldOfView=55; content.transform.perspectiveProjection=projection; trace( "content.transform.matrix3D : " + content.transform.matrix3D ); // после этого matrix3D определена, без нее perspectiveProjection возможно в пустоту this.content.rotationY = 0; trace( "content.transform.matrix3D : " + content.transform.matrix3D ); function stageResizeHandler(event : Event):void { content.x=stage.stageWidth/2; // при изменении размеров сцены и вьюПойнт должна ездить var projection:PerspectiveProjection = new PerspectiveProjection(); projection.projectionCenter=new Point(content.x,content.y); content.transform.perspectiveProjection=projection; } |
|
|||||
Ого, сам я на матрицу 3д-трансформации даже не додумался посомтреть. Все-таки как-то неявно они это сделали.
Спасибо огромное, Silin, ты мой спаситель
__________________
Дело не в тебе |
Часовой пояс GMT +4, время: 10:52. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|