![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2010
Адрес: 55.1° с.ш. 82.56° в.д.
Сообщений: 25
|
Здравствуйте,
У меня такая проблемка возникла. Создал Sprite добавил в список отображения мой динамический TextField и добавил в тот же список маску для этого TextField'а в виде Shape (.drawRect(...)), присвоил textField.mask = mymask, написал функционал скроллинга для текста, но вот беда: при перемещении TextField под маской (его скроллинга) маска постепенно тоже смещается, конечно не так сильно как сам текст, но все равно, я же ее (маску) не двигаю, и ее родителя тоже не двигаю, и координаты у нее (0,0) остаются. Как сделать чтобы все нормально работало, т.е. маска стояла, а текст под ней двигался??? |
|
|||||
|
Можете показать исходник?
|
|
|||||
|
Регистрация: Aug 2010
Адрес: 55.1° с.ш. 82.56° в.д.
Сообщений: 25
|
var tf:TextField = new TextField(); tf.mouseWheelEnabled = false; tf.width = 400; tf.text = "Большой и длинный текст"; tf.height = 400; tf.background = true; tf.backgroundColor = 0xff0000; var m:Shape = new Shape(); m.graphics.beginFill(0x000000); m.graphics.drawRect(0,0,200,200); m.graphics.endFill(); tf.mask = m; var :Sprite = new Sprite(); holder.rotationZ = -10; holder.addChild(tf); holder.addChild(m); this.addChild(holder); this.rotationX = -10;//повороты нужны может в них проблема this.rotationY = -10; tf.addEventListener(MouseEvent.MOUSE_WHEEL,wheelText); private function wheelText(ev:MouseEvent):void { tf.y += ev.delta; //плюс там ограничения на перемещения } Такое ощущение просто поднимается проекция маски на экран Последний раз редактировалось zatoichi; 31.08.2010 в 18:25. |
|
|||||
|
Вот так должно быть?
|
|
|||||
|
Регистрация: Aug 2010
Адрес: 55.1° с.ш. 82.56° в.д.
Сообщений: 25
|
Это же всего лишь класс (код конструктора) , экземпляр которого нужно добавить к root, а еще забыл
Просто проще так было написать чем вырезать из кода в 1000 строк то, что именно касается этого функционала. Добавлено через 2 минуты Тем более загрузка текста там идет определенным образом из ссылки переданной в xml и прочие дела Последний раз редактировалось zatoichi; 31.08.2010 в 14:20. |
|
|||||
|
Чтобы нарисовать маску этого недостаточно. Надо вот так:
|
|
|||||
|
Регистрация: Aug 2010
Адрес: 55.1° с.ш. 82.56° в.д.
Сообщений: 25
|
Согласен, и это не написал, уже исправил, но это не касается самого вопроса.. Дело то не в этом, маска работает и текст маскируется, т.е. за границами маски текста не видно, но область видимого текста смещается. Для лучшей наглядности попробуйте залить фон текстового поля. Да, кстати в root установлены .perspectiveProjection.focalLength = 1000, .perspectiveProjection.projectionCenter = new Point(xcen,ycen) по центру сцены
Ну, кто-нибудь, скажите что думаете по этому поводу. TWETTI ну как? Получили такой же результат? Добавлено через 5 часов 32 минуты Обнаружил такие закономерности. Получается, что маска вообще не смещается и ее глобальные координаты остаются прежними (странно как-то), но если маскируемый объект, находящийся в иерархии по-разному повернутых в 3d контейнеров, мы начинаем двигать, то область отображения этого маскированного объекта начинает как-то смещаться, это можно исправить, двигая маску вместе с объектом, но не через изменение ее координат x и y, а просто сделав маску child'ом для этого объекта, тогда все нормально, однако как для textField'а создать ребенка я не знаю, но для sprite всё проканывает. И еще если вышеназванный код писать в кадре root-мувиклипа, а не в отдельном классе, то такой проблемы вообще не возникает, что для меня не понятно. Добавлено через 18 часов 6 минут Всем на заметку: Оказывается отображаемая часть маскированного объекта - это лишь проекция объекта маски от точки (xObj,yObj,Infinity) на плоскость z = -stage.perspectiveProjection.focalLength. Последний раз редактировалось zatoichi; 31.08.2010 в 20:19. |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:57. |
|
|
« Предыдущая тема | Следующая тема » |
|
|