Hallo,
ich hab folgendes Problem, und bis jetzt leider noch keine Lösung dazu finden können.
ich erstelle Planes in einer Scene mit PV3D, als BitmapMaterial dienen png's (in der Bib) die an den Rändern transparente Flächen haben, die Planes liegen verteilt im Raum, wenn ich jetzt mit der Maus über die Planes komme, habe ich ein MOUSE_OVER, ein MOUSE_OUT und ein MOUSE_CLICK, nur leider auch bei den transparenten stellen.
Gibt es eine Lösung das bei den transparenten Flächen kein Event ausgelöst wird?
hier noch der minimalquellcode
ActionScript:
package src.view
{
public class Main3D extends BasicView
{
//-----------------------------------------------------------------------------------------
private var bmpDataArray:Array;
private var contentItems:Array;
private var planes:Array;
//-----------------------------------------------------------------------------------------
public function Main3D()
{
this.setupBmpDataArray();
this.setupPapervision3D();
this.setupPlanes();
}
//-----------------------------------------------------------------------------------------
private function setupBmpDataArray():void
{
this.bmpDataArray = new Array();
for (var i:int = 0; i < this.contentItems.length; ++i) {
var c:Class = getDefinitionByName(this.contentItems[i].bmpName) as Class;
this.bmpDataArray.push(c);
}
}
//-----------------------------------------------------------------------------------------
private function setupPlanes():void
{
this.planes = new Array();
for(var i:int = 0; i < this.contentItems.length; ++i)
{
var bitmapMaterial:BitmapMaterial = this.createBitmapMaterial(i);
bitmapMaterial.interactive = true;
bitmapMaterial.doubleSided = true;
bitmapMaterial.precise = true;
var plane:Plane = new Plane(bitmapMaterial);
plane.x = this.contentItems[i].x;
plane.y = this.contentItems[i].y;
plane.z = this.contentItems[i].z;
plane.rotationY = this.contentItems[i].rotationY;
this.scene.addChild(plane);
plane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, this.plane_objectClickHandler);
plane.addEventListener(InteractiveScene3DEvent.OBJECT_OVER, this.planeHandler);
plane.addEventListener(InteractiveScene3DEvent.OBJECT_OUT, this.planeHandler);
this.planes.push(plane);
}
}
//-----------------------------------------------------------------------------------------
private function createBitmapMaterial(index:int):BitmapMaterial
{
var c:Class = this.bmpDataArray[index];
var bitmap:Bitmap = new Bitmap(new c(0,0));
var bitmapMaterial:BitmapMaterial = new BitmapMaterial(bitmap.bitmapData);
return bitmapMaterial;
}
//-----------------------------------------------------------------------------------------
// listener
//-----------------------------------------------------------------------------------------
private function plane_objectClickHandler(event:InteractiveScene3DEvent):void
{
trace("click");
}
//-----------------------------------------------------------------------------------------
private function planeHandler(e:InteractiveScene3DEvent):void
{
var index:int = this.findObjectFromPosition(Plane(e.target));
switch(e.type) {
case InteractiveScene3DEvent.OBJECT_OUT:
trace("out");
break;
case InteractiveScene3DEvent.OBJECT_OVER:
trace("over");
break;
}
}
//-----------------------------------------------------------------------------------------
}
}
Bin für jeden Tip Dankbar.