动态改变贴图(2)
来源:互联网 发布:diss大战 知乎 编辑:程序博客网 时间:2024/05/16 07:46
这里没有重新new 材质material 而是通过改变贴图 texture 来实现
demo :http://56589.5c5c.info/swf/Face.swf
简单原型 :
/**
*
*
*
* Back Front 为两个MovieClip
*
*
*//
package {
import fl.motion.easing.Back;
import flash.display.MovieClip;
import flash.display.Sprite;
import org.papervision3d.materials.MovieMaterial;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.view.BasicView;
import org.papervision3d.materials.utils.BitmapMaterialTools
import flash.events.Event
import flash.display.BitmapData;
public class Test extends BasicView {
private var bfSp:BFSprite;
private var plane:Plane
private var material:MovieMaterial
public function Test() {
// constructor code
stage.frameRate = 40;
init()
startRendering()
}
private function init():void {
createPlane();
}
private function createPlane():void {
var front:Sprite = new Front();
var back:Sprite = new Back()
back.x=0
back.y=back.height
back.rotationX=180 //这里的原因可以看 http://blog.csdn.net/hu36978/archive/2010/05/08/5569710.aspx
var bBack:Sprite= new Sprite()
bBack.addChild(back)
bfSp = new BFSprite();
bfSp.front.addChild(front);
bfSp.back.addChild(bBack);
material= new MovieMaterial(bfSp,false);
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
var material:MovieMaterial = MovieMaterial(plane.material)
material.animated=true
var sp:BFSprite = BFSprite(material.texture)
if ((plane.rotationX%360 > 90) && (plane.rotationX%360 < 270)) {
if (sp.container.getChildByName(sp.front.name)) {
// 显示back
sp.container.removeChildAt(0)
sp.container.addChild(sp.back);
}
}
else
{
if(sp.container.getChildByName(sp.back.name)){
//显示front
sp.container.removeChildAt(0)
sp.container.addChild(sp.front);
}
}
}
}
}
BFSprite 类::控制2个 MC 当然这里你可以扩展用来实现控制多个
/*
*
* 双面 用于pv3d 主要是通过索引显示
*
*
* */
package {
import flash.display.Sprite;
public class BFSprite extends Sprite {
public var front:Sprite
public var back:Sprite;
public var container:Sprite
public function BFSprite() {
// constructor code
init()
}
private function init():void {
//front back 的容器
container = new Sprite();
// container.width = this.width
// container.height=this.height
this.addChild(container);
container.name="container"
//front 正面
front = new Sprite()
front.name = "front";
//front.width = this.width;
// front.height = this.height
container.addChild(front);
//反面
back = new Sprite()
back.name = "back";
//back.width = this.width
// back.height = this.height
// container.addChild(back);
trace("Create");
}
}
}
- 动态改变贴图(2)
- 改变鼠标光标贴图
- 关于动态贴图问题不能动态通过texture改变只能重新new 新material
- 改变鼠标贴图,点击变化
- unity动态贴图
- 动态改变图片尺寸(二)
- 动态加载贴图和模型
- 动态字体的贴图管理
- 动态加载贴图和模型
- 动态更改TerrainDetail的贴图
- PBR贴图转换2——PBR 作了哪些改变
- 动态改变Quartz的调度时间(2)
- unity3d 代码改变贴图压缩格式
- unity3d 凹凸贴图、法线贴图、置换贴图 (一)
- unity3d 凹凸贴图、法线贴图、置换贴图 (二)
- 动态改变filelable的值2
- jqgrid-2动态改变列编辑属性
- 动态生成(改变)iframe中的内容
- Android开发之旅: Intents和Intent Filters(理论部分)
- 五款常用mysql slow log分析工具的比较
- emacs在前台和后台的切换
- Oacle storage structure
- Android开发之旅: Intents和Intent Filters(实例部分)
- 动态改变贴图(2)
- MyEclipse报错pulse has automatically detected drop-ins added or removed from your
- Eclipse安装插件支持jQuery智能提示
- ACM
- 基于linux2.6.33 spi驱动移植总结
- VC浏览器相关的学习(三)(解决IE8无法断点调试)
- ACM
- C#值传递引用类型数据的问题
- javadoc 警告:编码 GBK 的不可映射字符