Salve a tutti, ho un problema che girandoci girandoci mi sta facendo diventare matto!
Ho esteso con prototype la classe mc per lavorare in 3d, quindi asse x, y, z.
Tutto funziona correttamente, tranne il calcolo del depth basato sull'asse Z.
Questo è il codice che eseguo:
E questo è il tracciamento che ottengo:codice:MovieClip.prototype.commit = function() { var cx = this.x - _global.Camera.x; var cy = this.y - _global.Camera.y; var cz = this.z - _global.Camera.z; var tx, ty, tz; // temporary x, y and z variables // rotation around x axis var angle = _global.Camera.rotation; tx = Math.cos(angle)*cx - Math.sin(angle)*cz; tz = Math.sin(angle)*cx + Math.cos(angle)*cz; cx = tx; cz = tz; // rotation around y axis angle = _global.Camera.upAngle; ty = Math.cos(angle)*cy - Math.sin(angle)*cz; tz = Math.sin(angle)*cy + Math.cos(angle)*cz; cy = ty; cz = tz; if (this.z > _global.Camera.nearView && this.z < _global.Camera.farView) { if (!this._visible) this._visible = true; var scaleRatio = _global.Camera.focalLength / ( _global.Camera.focalLength + this.z); this._x = cx * scaleRatio; this._y = cy * scaleRatio; this._xscale = this._yscale = 100 * scaleRatio; this.swapDepths(-Math.round(this.z)); } else this._visible = false; };
--------------------------------------
Name:10.swf.16
x:-199 y:0 z:106
depth:17 z-inv:-106
--------------------------------------
Il depth del tracciamento, è quello che ottengo dalla mia "Scena3D" quando attacco le clip la prima volta nella scena:
var myClip = myScreen.attachMovie(Clips[a], Clips[a]+"."+a, a+);
dopo di che il resto è storia, il depth non cambia più.
Dal "Debug", se così si può definire quello di flash, ho notato che anche se essendoci gli elementi in scena, myScreen, che è una semplice clip, non ha le clips al suo interno e non sono nemmeno all'esterno, pur essendo attaccate, modificabili e tracciabili.
Qualcuno ha mai avuto problemi simili?

Rispondi quotando