如何取到元素的总高
时间:2011-01-20
来源:互联网
如何取到scene里元素的总高,朋友说用viewport.height 可以取到,但拿到的只有当前显示的高,因为想做一个双向列表,刚接触PV3D
test01.swf (74.02 KB)
复制内容到剪贴板
{
import flash.display.*;
import flash.events.*;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.materials.*;
import org.papervision3d.events.*;
import org.papervision3d.view.BasicView;
import caurina.transitions.Tweener;
/**
* ...
* @author dsc
*/
public class BasicViewExample extends BasicView
{
private var itemOfNumber :int = 24; //物件數量。
private var currentPlaneIndex :Number = 0;//目前圖片的索引值。
private var planeAngle :Number = 65; //角度。
private var planeSeparation :Number = 120; //左右二邊Plane與Plane的間距。
private var planeOffset :Number = 160; //目前所選擇的Plane其左右的間距。
private var selectPlaneY :Number = 0; //目前所選擇Plane的y值。
private var selectPlaneZ :Number = -500; //目前所選擇Plane的z值。
private var isRender :Boolean = false;
private var planeArray :Array = new Array()
public function BasicViewExample()
{
init3DEngine();
init3DObject();
initObject();
}
private function init3DEngine():void {
//super(0, 0, true, true, "Target");
camera.z = -800;
viewport.buttonMode = true;
viewport.interactive = true;
startRendering();
}
private function init3DObject():void {
for ( var i = 0; i < itemOfNumber; i++ ) {
var movieMat:MovieMaterial = new MovieMaterial( new _mc(), true, true, true );
movieMat.doubleSided = true;
movieMat.interactive = true;
var plane = new Plane(movieMat, 200, 200);
plane.name = "item" + i
plane.material.movie._txt.text = i;
//mc._txt.text = i;
plane.extra = { id:i }
plane.z = i * -200
scene.addChild(plane);
plane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, on3DClick)
planeArray.push(plane)
}
shiftToItem(0);
}
private function initObject():void {
stage.addEventListener( MouseEvent.MOUSE_WHEEL, onEventMouseWheel);
}
private function on3DClick(e:InteractiveScene3DEvent):void {
var _id:int = e.displayObject3D.extra.id;
shiftToItem(_id);
}
private function shiftToItem(p_id:int) {
isRender = true;
currentPlaneIndex = p_id;
stage.quality = StageQuality.MEDIUM;
var _tweenObj:Object;
for (var i:int = 0; i < itemOfNumber; i++) {
var plane:Plane = scene.getChildByName("item" + i) as Plane;
var dis :int = i - p_id;
if (i == p_id) {
//如果目前回圈值等於目標編號值
//表示目前所算算的plane為正中間顯示。
_tweenObj =
{
x :0,
y :selectPlaneY,
z :selectPlaneZ,
rotationX :0,
onComplete :function ():void {
stage.quality = StageQuality.HIGH;
isRender = false;
}
};
} else if (i < p_id) {
//如果回圈值小於目標編號值
//表示該plane在左邊。
_tweenObj =
{
x :0,
y :dis * planeSeparation - planeOffset,
z :0,
rotationX : planeAngle
/*onComplete :endFun,
onCompletePatr:[plane]*/
};
} else {
//plane在右邊。
_tweenObj =
{
x :0,
y :dis * planeSeparation + planeOffset,
z :0,
rotationX : -planeAngle
/*onComplete :endFun,
onCompletePatr:[plane]*/
};
}
_tweenObj.time = 1;
Tweener.addTween(plane, _tweenObj);
//使用Tweener移動物件。
}
}
/*private function endFun(obj:DisplayObject3D):void {
if(obj.y)
}*/
private function onEventMouseWheel(e:MouseEvent):void {
//MouseEvent類別下, delta屬性可以得到滑鼠滾輪的值
//e.dalta如果大於0,表示滾輪向上,小於0表示向下。
if (e.delta < 0) {
moveLeft();
}else {
moveRight();
}
}
private function moveLeft():void {
if (currentPlaneIndex > 0) {
//如果目前plane的索引值大於0的話
shiftToItem(currentPlaneIndex - 1);
}
}
private function moveRight():void{
if (currentPlaneIndex < itemOfNumber -1) {
//如果目前plane的索引值小於總數量扣一
shiftToItem(currentPlaneIndex + 1);
}
}
override protected function onRenderTick(e:Event = null):void {
if (isRender) {
super.onRenderTick();
}
}
}
}
代码:
package{
import flash.display.*;
import flash.events.*;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.materials.*;
import org.papervision3d.events.*;
import org.papervision3d.view.BasicView;
import caurina.transitions.Tweener;
/**
* ...
* @author dsc
*/
public class BasicViewExample extends BasicView
{
private var itemOfNumber :int = 24; //物件數量。
private var currentPlaneIndex :Number = 0;//目前圖片的索引值。
private var planeAngle :Number = 65; //角度。
private var planeSeparation :Number = 120; //左右二邊Plane與Plane的間距。
private var planeOffset :Number = 160; //目前所選擇的Plane其左右的間距。
private var selectPlaneY :Number = 0; //目前所選擇Plane的y值。
private var selectPlaneZ :Number = -500; //目前所選擇Plane的z值。
private var isRender :Boolean = false;
private var planeArray :Array = new Array()
public function BasicViewExample()
{
init3DEngine();
init3DObject();
initObject();
}
private function init3DEngine():void {
//super(0, 0, true, true, "Target");
camera.z = -800;
viewport.buttonMode = true;
viewport.interactive = true;
startRendering();
}
private function init3DObject():void {
for ( var i = 0; i < itemOfNumber; i++ ) {
var movieMat:MovieMaterial = new MovieMaterial( new _mc(), true, true, true );
movieMat.doubleSided = true;
movieMat.interactive = true;
var plane = new Plane(movieMat, 200, 200);
plane.name = "item" + i
plane.material.movie._txt.text = i;
//mc._txt.text = i;
plane.extra = { id:i }
plane.z = i * -200
scene.addChild(plane);
plane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, on3DClick)
planeArray.push(plane)
}
shiftToItem(0);
}
private function initObject():void {
stage.addEventListener( MouseEvent.MOUSE_WHEEL, onEventMouseWheel);
}
private function on3DClick(e:InteractiveScene3DEvent):void {
var _id:int = e.displayObject3D.extra.id;
shiftToItem(_id);
}
private function shiftToItem(p_id:int) {
isRender = true;
currentPlaneIndex = p_id;
stage.quality = StageQuality.MEDIUM;
var _tweenObj:Object;
for (var i:int = 0; i < itemOfNumber; i++) {
var plane:Plane = scene.getChildByName("item" + i) as Plane;
var dis :int = i - p_id;
if (i == p_id) {
//如果目前回圈值等於目標編號值
//表示目前所算算的plane為正中間顯示。
_tweenObj =
{
x :0,
y :selectPlaneY,
z :selectPlaneZ,
rotationX :0,
onComplete :function ():void {
stage.quality = StageQuality.HIGH;
isRender = false;
}
};
} else if (i < p_id) {
//如果回圈值小於目標編號值
//表示該plane在左邊。
_tweenObj =
{
x :0,
y :dis * planeSeparation - planeOffset,
z :0,
rotationX : planeAngle
/*onComplete :endFun,
onCompletePatr:[plane]*/
};
} else {
//plane在右邊。
_tweenObj =
{
x :0,
y :dis * planeSeparation + planeOffset,
z :0,
rotationX : -planeAngle
/*onComplete :endFun,
onCompletePatr:[plane]*/
};
}
_tweenObj.time = 1;
Tweener.addTween(plane, _tweenObj);
//使用Tweener移動物件。
}
}
/*private function endFun(obj:DisplayObject3D):void {
if(obj.y)
}*/
private function onEventMouseWheel(e:MouseEvent):void {
//MouseEvent類別下, delta屬性可以得到滑鼠滾輪的值
//e.dalta如果大於0,表示滾輪向上,小於0表示向下。
if (e.delta < 0) {
moveLeft();
}else {
moveRight();
}
}
private function moveLeft():void {
if (currentPlaneIndex > 0) {
//如果目前plane的索引值大於0的話
shiftToItem(currentPlaneIndex - 1);
}
}
private function moveRight():void{
if (currentPlaneIndex < itemOfNumber -1) {
//如果目前plane的索引值小於總數量扣一
shiftToItem(currentPlaneIndex + 1);
}
}
override protected function onRenderTick(e:Event = null):void {
if (isRender) {
super.onRenderTick();
}
}
}
}

作者: dsc0001 发布时间: 2011-01-20
FLA 里面只有一个 _mc 所以就不传了,
作者: dsc0001 发布时间: 2011-01-20
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28