好的,在這裏。
我試圖讓它與MovieAssetMaterial一起工作,沒有運氣。 如果我跟蹤MovieAssetMaterial中的舞臺,舞臺爲空,我猜這就是爲什麼scrollpane不能正常工作。這是一個容器,因此它需要舞臺來正確設置自己。
我已經設法在papervision平面上獲得200x200的滾動窗格,並且有一些變通辦法可以交互。這裏是我的代碼:
package{
import org.papervision3d.*;
import org.papervision3d.view.*;
import org.papervision3d.cameras.*;
import org.papervision3d.materials.*;
import org.papervision3d.objects.*;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.scenes.*;
import org.papervision3d.render.*;
import flash.display.*;
import flash.events.*;
import fl.controls.*;
import fl.containers.*;
public class PV3DScrollPane extends MovieClip{
private var viewport:Viewport3D;
private var camera:Camera3D;
private var scene:Scene3D;
private var renderer:BasicRenderEngine;
private var plane:Plane;
public function PV3DScrollPane(){
init3D();
}
private function init3D():void
{
//setup 3d
viewport = new Viewport3D(1024, 768, false, true);
addChild(viewport);
camera = new Camera3D();
camera.z = -500;
camera.zoom = 1;
camera.focus = 500;
camera.target = DisplayObject3D.ZERO;
scene = new Scene3D();
renderer = new BasicRenderEngine();
//setup plane
plane = makePlane();
stage.addEventListener(Event.ENTER_FRAME, loop);
}
public function makePlane():Plane
{
//setup scroll pane
var sp:ScrollPane = new ScrollPane();
addChild(sp);
sp.x = 1000;//hide it off stage, visible doesn't help much
sp.source = 'http://www.helpexamples.com/flash/images/image1.jpg';
sp.setSize(200, 200);
//setup material & plane
var mat:MovieMaterial = new MovieMaterial(sp, false, true, false);
mat.interactive = true;
var plane:Plane = new Plane(mat, 0, 0, 10, 10);
scene.addChild(plane);
return plane;
}
private function loop(evt:Event):void
{
//plane.rotationY++;
renderer.renderScene(scene, camera, viewport);
}
}
}
而且解釋: 我使用BasicView試過,但讓我使用了一個創建場景,相機,渲染和視口的老校友方式我不能得到相同的結果。 由於ScrollPane需要舞臺,我已經將它添加到舞臺上,然後設置其大小。 我使用ScrollPane創建了MovieMaterial,並將其交互設置爲true。 我已經通過放棄舞臺「隱藏」了組件。可見設置爲false讓我回到100x100的問題。
我google有點因爲我記得UI組件用於與papervision工作。那是的,他們使用工作。 Here是我記得的帖子。 Blitz Agency也有類似的帖子。如果你是Google的話,你可以找到InteractiveMovieMaterial.as,但它不適用於當前的papervision版本,因爲沒有drawFace3D方法了,事情已經發生了一些變化。在我做了修復後,我發現了一個更新的(2008)blog post on John Grden's website關於這個問題。這種方法有相似之處,但我沒有經歷所有這些麻煩。
希望這會有所幫助!
謝謝! John Grden的這篇文章確實有幫助。 –
酷!很高興你把它整理一下。我討厭什麼時候事情不起作用,這不是你自己的錯:) –