構建Adobe AIR應用程序 - 似乎與localToGlobal有關。我一直在關注這個設置我的應用程序的多個屏幕尺寸:localToGlobal Adobe AIR
http://www.adobe.com/devnet/air/articles/multiple-screen-sizes.html
但我似乎總是在運行與我的localToGlobal的問題。我已經使用了「縮放和居中接口」部分中的大部分代碼,我的應用正在適當調整應用大小。
我已經轉換了所有的localToGlobal調用,並將新的比例值乘以x和y,但沒有得到所需的結果。它仍然可以在原始的iPhone 4/4s分辨率下正常工作,但是我的Line Intersections的3gs分辨率測試不起作用,它專門使用localToGlobal代碼來計算出來。
下面是調用一個局部點代碼:
var p:Point = localToGlobal(_lineStart);
p = parent.globalToLocal(p);
p.x *= GameHolderSun.scaleValue;
p.y *= GameHolderSun.scaleValue;
return p;
確定交叉路口:
var p:Point = determineLineIntersection(_laser.get2ndLastPoint(), _laser.getLastPoint(), _reflectors[i].lineStart, _reflectors[i].lineEnd);
if(p != null){
_laser.addNewLinePoint(p, _reflectors[i].rotation);
}
線交會功能我在網上抓起:
private function determineLineIntersection(A:Point, B:Point, E:Point, F:Point,as_seg:Boolean=true):Point
{
var ip:Point;
var a1:Number;
var a2:Number;
var b1:Number;
var b2:Number;
var c1:Number;
var c2:Number;
a1= B.y-A.y;
b1= A.x-B.x;
c1= B.x*A.y - A.x*B.y;
a2= F.y-E.y;
b2= E.x-F.x;
c2= F.x*E.y - E.x*F.y;
var denom:Number=a1*b2 - a2*b1;
if (denom == 0) {
return null;
}
ip=new Point();
ip.x=(b1*c2 - b2*c1)/denom;
ip.y=(a2*c1 - a1*c2)/denom;
ip.x *= GameHolderSun.scaleValue;
ip.y *= GameHolderSun.scaleValue;
if(as_seg)
{
if(Math.pow(ip.x - B.x, 2) + Math.pow(ip.y - B.y, 2) > Math.pow(A.x - B.x, 2) + Math.pow(A.y - B.y, 2)) return null;
if(Math.pow(ip.x - A.x, 2) + Math.pow(ip.y - A.y, 2) > Math.pow(A.x - B.x, 2) + Math.pow(A.y - B.y, 2)) return null;
if(Math.pow(ip.x - F.x, 2) + Math.pow(ip.y - F.y, 2) > Math.pow(E.x - F.x, 2) + Math.pow(E.y - F.y, 2)) return null;
if(Math.pow(ip.x - E.x, 2) + Math.pow(ip.y - E.y, 2) > Math.pow(E.x - F.x, 2) + Math.pow(E.y - F.y, 2)) return null;
}
return ip;
}
希望有人能夠幫助!如果需要,我可以提供更多信息!
實際上,您可以通過使用this.root.scaleX – Exort
獲取舞臺的DPI縮放比例因爲某些原因,我的mx.core不包含FlexGlobals:S – Lagoo87
我在Flex SDK 4.6.0上 – Lagoo87