電子書籍の厳選無料作品が豊富!

AS3.0を勉強しようと思い、CS4の体験版をインストールしました。
Tweenerを試したりAS2.0との違いなど勉強しているところです。

今回困っているのはpapervision3Dでのコンパイルエラーです。
Public Beta 2.0 - Great White というバージョンをダウンロードし、
/ユーザー/classes/org/papervision3d に配置し、クラスパス設定しました。
環境はMac OS X です。

http://www.thinkit.co.jp/images/article/91/3/913 …
上記URLにてpapervision3Dのサンプルをダウンロードし、01Planeフォルダ内plane.flaをダブルクリックで開きムービーの書き出しをしたところ・・・

1137: 引数の数が正しくありません。0 個以下であることが必要です。scene = new Scene3D( container );
1180: 未定義である可能性が高いメソッド OldCube の呼び出しです。cubeObj = new OldCube( material, cubeSize, cubeSize, cubeSize, segment, segment);
1061: 未定義である可能性のあるメソッド renderCamera を、静的型 org.papervision3d.scenes:Scene3D の参照を使用して呼び出しました。scene.renderCamera( camera );
Warning: 3590: ブール値が必要ですが、void が使用されています。ブール式に型強制されます。return (displayObjects[do3d] != null);
Warning: 3590: ブール値が必要ですが、void が使用されています。ブール式に型強制されます。var bEnd:Boolean = i==(iHorNum-0);

といったエラーがずらずら表示されます。他のサンプルでもpapervision3Dを使用したものでは同じようなエラーがでてしまいます。
何か特別な設定が必要なのか、クラスパスの設定なのか、それとも根本的な問題なのか、検討がつきません。。
お解りになる方、助けてください。

A 回答 (1件)

おそらく、あなたがダウンロードしたPapervision3Dと


サンプル(http://www.thinkit.co.jp/images/article/91/3/913 …
で使われているPapervision3Dのバージョンが違います。

そのサンプルは古いバージョンのPapervision3Dが使われています。
最新のPapervision3Dとは大幅に変更されています。
最新のPapervision3D(Revision 858)では
Scene3Dは引数なしのコンストラクタしか定義されていません。
OldCubeはなく、Cubeしかありません。

そのサンプルがどういうものか知りませんが、Cubeを表示するだけのものなら、以下のようにすればできます。

package {
import flash.display.*;
import flash.events.*;

//Papervision3Dで使うクラスをインポート
import org.papervision3d.cameras.*;
import org.papervision3d.materials.*;
import org.papervision3d.materials.utils.*;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.render.*;
import org.papervision3d.scenes.*;
import org.papervision3d.view.*;

//メインクラス
public class HelloCube extends Sprite {
private var scene:Scene3D;//シーン(3D空間)
private var camera:Camera3D;//カメラ
private var viewport:Viewport3D;//ビューポート
private var renderer:BasicRenderEngine//描画エンジン
private var cube:Cube//立方体

public function HelloCube() {
//シーン(3D空間)の生成
scene = new Scene3D();

//カメラの生成
camera = new Camera3D();

//カメラの設定
camera.x = camera.y = 0;
camera.z = -1000;
camera.focus = 100;//focus×zoom分、オブジェクトから離れている場合
camera.zoom = 10;//画面に同じ大きさで描画される

//ビューポートの生成
viewport = new Viewport3D(600, 400);

//画面にビューポートを追加
this.addChild(viewport);

//描画エンジンの生成
renderer = new BasicRenderEngine();

//Cube(立方体)の生成
//マテリアルリストの生成
var materialsList:MaterialsList = new MaterialsList();
materialsList.addMaterial(new ColorMaterial(0xFF0000),"front");
materialsList.addMaterial(new ColorMaterial(0x00FF00),"back");
materialsList.addMaterial(new ColorMaterial(0x0000FF),"right");
materialsList.addMaterial(new ColorMaterial(0xFFFF00),"left");
materialsList.addMaterial(new ColorMaterial(0xFF00FF),"top");
materialsList.addMaterial(new ColorMaterial(0x00FFFF),"bottom");

//マテリアルリストを元にCubeを生成
cube = new Cube(materialsList,100,100,100,2,2,2);

//Cubeをsceneに追加
scene.addChild(cube);

//毎フレームの描画処理メソッドを登録
stage.addEventListener(Event.ENTER_FRAME, drawPapervision3d);
}

//毎フレームの描画
private function drawPapervision3d(e:Event):void {
//Cubeを回転
cube.rotationX += 1;
cube.rotationY += 1;
cube.rotationZ += 1;

//cameraから見たsceneをviewportに描画
renderer.renderScene(scene, camera, viewport);
}

}
}
    • good
    • 0
この回答へのお礼

studentE5T様ありがとうございます。
studentE5T様のCube表示スクリプトを試したところエラーは無く、Cubeが表示されました!感動です!

サンプルがコンパイルエラーになるのはバージョンによるものだったんですね。。気づきませんでした。
また、大きく変更されたという事なので、これから勉強していく自分としては
古いバージョンでまず慣れた方がよいのか、新しいバージョンからやっていった方がよいのか判断が難しいですね。
ネットに転がっているサンプルの多くが新しいバージョンで書き出せないのは辛いですね。

お礼日時:2009/01/13 15:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!