views:

225

answers:

1

hi evryone , i am encounter with a small problem i want to make a 3d rtl text animation with papervision this code generet a problem to this :

[Fault] exception, information=TypeError: Error #1009: Cannot access a property or method of a null object reference. but when using a english text this error dont genereta my 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)
 }

}

} i am using flashdevelop. please help me thank's

A: 

I reckon helvetica-bold doesn't unfortunately contain the unicode characters you're trying to show. Just stumbled on this post, haven't checked it in depth but the idea seems interesting in case there is no arabic Font3D extension ...

Theo.T