关于动态贴图有关问题不能动态通过texture改变只能重新new 新material
关于动态贴图问题不能动态通过texture改变只能重新new 新material
关于动态贴图问题不能动态通过texture改变只能重新new 新material
2010年08月17日
这里指的是改变material 贴图 而贴图时静态只有一张 当然我们也可以通过贴图的变化来间接达到动态改变贴图(贴图外观变化了)具体实现就是通过过控制贴图的属性改变外观 而不是改变 pv3d matrial的 texture属性 总之 通过textture是不能动态改变贴图的只能引用当前贴图
/*
不能动态的通过texture(movie)改变材质,而只是通过该属性来引用贴图而已 对于动态改变材质只能重新新new material类
*/
/**\\
MC MC2 MC3都是 MovieClip
*/
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.sampler.NewObjectSample;
import org.papervision3d.materials.MovieMaterial;
import org.papervision3d.materials.WireframeMaterial;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.view.BasicView;
/**
* ...
* @author dreamnight
*/
public class BothFace extends BasicView
{
private var plane:Plane
private var material:MovieMaterial
public function BothFace() {
init()
stage.frameRate = 40;
startRendering()
}
private function init():void {
createPlane();
// addAction
}
private function createPlane():void {
var mc:Sprite = new MC();
material= new MovieMaterial(mc);
trace("movie为"+material.movie)
trace("材质为:"+material.texture)
material.doubleSided=true
plane = new Plane(material,400,300,2,2);
this.scene.addChild(plane);
}
override protected function onRenderTick(e:Event=null):void
{
super.onRenderTick();
plane.rotationX += 2
if ((plane.rotationX%360 > 180) && (plane.rotationX%360 < 360)) {
// plane.material= new WireframeMaterial()
//plane.material.doubleSided=true
material=new MovieMaterial(new MC2())
plane.material=material
//material.movie = new MC()
//plane.material=new MovieMaterial(new MC());
plane.material.doubleSided = true
// trace("OK");
}
else {
// plane.material= new MovieMaterial(new MC());
// plane.material.doubleSided=true
material=new MovieMaterial(new MC())
plane.material=material
//MovieMaterial(plane.material).texture= new MC2()
//
plane.material.doubleSided = true
trace("yes");
}
}
}
}
关于动态贴图问题不能动态通过texture改变只能重新new 新material
2010年08月17日
这里指的是改变material 贴图 而贴图时静态只有一张 当然我们也可以通过贴图的变化来间接达到动态改变贴图(贴图外观变化了)具体实现就是通过过控制贴图的属性改变外观 而不是改变 pv3d matrial的 texture属性 总之 通过textture是不能动态改变贴图的只能引用当前贴图
/*
不能动态的通过texture(movie)改变材质,而只是通过该属性来引用贴图而已 对于动态改变材质只能重新新new material类
*/
/**\\
MC MC2 MC3都是 MovieClip
*/
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.sampler.NewObjectSample;
import org.papervision3d.materials.MovieMaterial;
import org.papervision3d.materials.WireframeMaterial;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.view.BasicView;
/**
* ...
* @author dreamnight
*/
public class BothFace extends BasicView
{
private var plane:Plane
private var material:MovieMaterial
public function BothFace() {
init()
stage.frameRate = 40;
startRendering()
}
private function init():void {
createPlane();
// addAction
}
private function createPlane():void {
var mc:Sprite = new MC();
material= new MovieMaterial(mc);
trace("movie为"+material.movie)
trace("材质为:"+material.texture)
material.doubleSided=true
plane = new Plane(material,400,300,2,2);
this.scene.addChild(plane);
}
override protected function onRenderTick(e:Event=null):void
{
super.onRenderTick();
plane.rotationX += 2
if ((plane.rotationX%360 > 180) && (plane.rotationX%360 < 360)) {
// plane.material= new WireframeMaterial()
//plane.material.doubleSided=true
material=new MovieMaterial(new MC2())
plane.material=material
//material.movie = new MC()
//plane.material=new MovieMaterial(new MC());
plane.material.doubleSided = true
// trace("OK");
}
else {
// plane.material= new MovieMaterial(new MC());
// plane.material.doubleSided=true
material=new MovieMaterial(new MC())
plane.material=material
//MovieMaterial(plane.material).texture= new MC2()
//
plane.material.doubleSided = true
trace("yes");
}
}
}
}