Ошибка PaperVision при использовании текста справа налево

Мой код генерирует следующую ошибку (предполагается создание 3D-анимации текста справа налево с помощью PaperVision):

Исключение [Fault], информация = TypeError: Ошибка № 1009: невозможно получить доступ к свойству или методу нулевой ссылки на объект.

Однако эта ошибка появляется только тогда, когда я ввожу текст, ориентированный на right-to-left. Когда я использую английский текст, я не получаю ошибок.

Вот мой код:

package {
    import flash.display.Sprite;
    import flash.events.Event;

    import org.papervision3d.scenes.Scene3D
    import org.papervision3d.view.Viewport3D
    import org.papervision3d.cameras.Camera3D
    import org.papervision3d.render.BasicRenderEngine
    import org.papervision3d.typography.Font3D
    import org.papervision3d.typography.fonts.HelveticaBold
    import org.papervision3d.typography.Text3D
    import org.papervision3d.materials.special.Letter3DMaterial
    import flash.text.engine.FontDescription
    import flash.text.engine.ElementFormat
    import flash.text.engine.TextElement
    import flash.text.engine.TextBlock
    import flash.text.engine.TextLine

    /* @author vahid */
    public class Main extends Sprite {
        private var fd:FontDescription
        private var ef:ElementFormat
        private var te:TextElement        
        protected var st:String;

        private var scene:Scene3D
        private var view:Viewport3D
        private var camera:Camera3D
        private var render:BasicRenderEngine
        private var vpWidth:Number = stage.stageWidth;
        private var vpHeight:Number = stage.stageHeight;
        private var text3d:Text3D 
        private var font3d:Font3D 
        //private var font:HelveticaBold
        private var textMaterial:Letter3DMaterial 
        private var text:String 

        public function Main():void {
            if (stage)
                init();
            else
                addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // rtl block 
            fd = new FontDescription ()                    
            ef = new ElementFormat (fd)            
            te = new TextElement ("?????? ?????? ???? ?????? ?? papervision", ef)

            text = te.text        
            //3d block

            scene = new Scene3D ()
            view = new Viewport3D (vpWidth,vpHeight,true,true,false,false)
            camera = new Camera3D ()
            render = new BasicRenderEngine()
            addChild (view)
            this.addEventListener (Event.ENTER_FRAME , renderThis)
            textMaterial = new Letter3DMaterial(0xFF0000,1)
            font3d = new HelveticaBold()
            text3d = new Text3D (text, font3d, textMaterial)
            scene.addChild (text3d)
        }

        protected function renderThis(e:Event):void 
        {
            text3d.rotationY +=5
            render.renderScene(scene,camera,view)
        }
    }
}

Если это уместно: я использую FlashDevelop.

Любые идеи относительно того, что может быть причиной этой проблемы, или как я могу ее обойти?


person Community    schedule 30.09.2009    source источник
comment
Последний } принадлежит коду? Я предполагаю, что закрыть пакет {   -  person Gerrit    schedule 01.10.2009


Ответы (1)


Я считаю, что Helvetica-bold, к сожалению, не содержит символов Юникода, которые вы пытаетесь показать. Только что наткнулся на это сообщение, подробно не проверял, но идея кажется интересной, если нет арабского расширения Font3D...

person Theo.T    schedule 01.10.2009