2009-09-30 11 views
1

Mon code génère l'erreur suivante (il est censé faire une animation de texte de droite à gauche 3D avec PaperVision):erreur PaperVision lors de l'utilisation de droite à gauche de texte basé

[Fault] exception, information=TypeError: Error #1009: Cannot access a property or method of a null object reference.

Cependant, cette erreur apparaît uniquement lorsque j'entre right-to-left texte orienté. Quand j'utilise du texte en anglais, je n'obtiens aucune erreur.

Voici mon code:

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) 
     } 
    } 
} 

Dans le cas où il est pertinent: J'utilise FlashDevelop.

Des idées sur ce qui pourrait être à l'origine de ce problème, ou comment je peux le contourner?

+0

Est-ce que le dernier} appartient au code? Je suppose que c'est, pour fermer le paquet { – Gerrit

Répondre

1

Je pense que helvetica-bold ne contient malheureusement pas les caractères Unicode que vous essayez d'afficher. Juste tombé sur this post, ne l'ai pas vérifié en profondeur mais l'idée semble intéressante dans le cas où il n'y a pas d'extension Font3D arabe ...