OK, I tried your suggestion and it works now, as soon as the Vertex
class is imported. Thank you for your hint!
Can you clarify another problem for me, please?
The Vertex class was actually importet in the Away3D_BaseClass2, which
gets extended (import away3d.core.base.*;) But if it is imported only
in the BaseClass, I get the error

/.../Away3D_drawLines.as, Line 31       1180: Call to a possibly undefined
method Vertex.

As soon as I import the class in the Away3D_drawLines class,
everything is ok. --- Did I miss sth on importing classes and the
extends prinzipile of Flash OOP???

Infos on the book:
The book is actually by Rob Bateman & Richard Olsson, both core
developers of Away3D. The book itself is Copyright 2010, not too long
ago ( I think April)

Thanks again!

On 17 Jun., 13:16, banal <[email protected]> wrote:
> I'm sorry, my answer was not very specific on what was the cause of
> the error.
> The error is caused, because you're using Number3D Objects for your
> calculations, but the LineSegment class expects it's start and end
> properties to be of type "Vertex".
> Since Number3D is not a Vertex, you get a compiler error.
> As seen in my previous post, you should be able to solve the issue by
> creating new Vertex objects using the coordinates of the Number3D
> Objects.
>
> On Jun 17, 1:08 pm, banal <[email protected]> wrote:
>
> > It's an error in your Away3D_drawLines class which uses Number3D
> > instead of the Vertex class.
> > I think this is a change that was introduced after the writing of the
> > Book?
>
> > You could easily fix that by writing:
> > seg.start = new Vertex(p1.x, p1.y, p1.z);
> > seg.end = new Vertex(p2.x, p2.y, p2.z);
>
> > On Jun 17, 12:43 pm, rowild <[email protected]> wrote:
>
> > > Hi,
>
> > > I bought the book "The Essential Guide to 3D in Flash", which is
> > > totally about Away3D. I am in chapter 4, where this code is posted
> > > (compared to the book, I changed the names of the classes):
>
> > > // Base Class
> > > package
> > > {
> > >         import away3d.core.base.*;
> > >         import away3d.cameras.*;
> > >         import away3d.containers.*;
>
> > >         import flash.display.*;
> > >         import flash.events.*;
>
> > >         public class Away3D_BaseClass2 extends Sprite
> > >         {
> > >                 protected var _camera:HoverCamera3D;
> > >                 protected var _view:View3D;
>
> > >                 public function Away3D_BaseClass2()
> > >                 {
> > >                         super();
> > >                         _createView();
> > >                         _createScene();
> > >                 }
>
> > >                 protected function _createView():void
> > >                 {
> > >                         _camera = new HoverCamera3D();
> > >                         _camera.distance = 1000;
> > >                         _camera.tiltAngle = 10;
> > >                         _camera.panAngle = 180;
>
> > >                         _view = new View3D();
> > >                         _view.x = 400;
> > >                         _view.y = 300;
> > >                         _view.camera = _camera;
>
> > >                         addChild(_view);
> > >                         addEventListener(Event.ENTER_FRAME, 
> > > _onEnterFrame);
> > >                 }
>
> > >                 protected function _createScene():void
> > >                 {
> > >                         // To be overridden
> > >                 }
>
> > >                 protected function _onEnterFrame(ev : Event):void
> > >                 {
> > >                         _camera.panAngle += (stage.mouseX - 
> > > stage.stageWidth/2) / 100;
> > >                         _camera.hover();
> > >                         //_camera.steps = 2;
>
> > >                         _view.render();
> > >                 }
> > >         }
>
> > > }
>
> > > // Extending Class (in new File of course)
> > > package
> > > {
> > >         import away3d.core.math.*;
> > >         import away3d.primitives.LineSegment;
>
> > >         [SWF(width="800",height="600")]
>
> > >         public class Away3D_drawLines extends Away3D_BaseClass2
> > >         {
> > >                 public function Away3D_drawLines():void
> > >                 {
> > >                         super();
> > >                 }
>
> > >                 override protected function _createScene():void
> > >                 {
> > >                         var i:int, p1:Number3D, p2:Number3D, 
> > > seg:LineSegment;
>
> > >                         p1 = new Number3D();
> > >                         p2 = new Number3D();
>
> > >                         for (i=0; i < 5; i++)
> > >                         {
> > >                                 p2.x = (Math.random() - 0.5) *200;
> > >                                 p2.y = (Math.random() - 0.5) *200;
> > >                                 p2.z = (Math.random() - 0.5) *200;
>
> > >                                 p2.add(p2, p1);
>
> > >                                 seg = new LineSegment();
> > >                                 seg.start = p1;
> > >                                 seg.end = p2;
>
> > >                                 _view.scene.addChild(seg);
>
> > >                                 p1.clone(p2);
> > >                         }
> > >                 }
> > >         }
>
> > > }
>
> > > and this error message shows up in my Flash CS5:
> > > /...h/Away3D_drawLines.as, Line 31      1067: Implicit coercion of a value
> > > of type away3d.core.math:Number3D to an unrelated type
> > > away3d.core.base:Vertex.
>
> > > I cannot solve this problem, and there is no Errata page at friendsof
> > > ed.com.
>
> > > Can anybody give me a hint what's wrong here?
> > > Thanks!

Reply via email to