2010-11-10 80 views
0

我收到了一條錯誤消息,說「嘗試訪問不可訪問的方法旋轉通過帶有靜態類型的引用flash.display:Sprite.ssd.rotation(90) }「 我只想知道如何在雙擊它時旋轉我的圖像90度。Actionscript 3.0旋轉圖像90度,從url加載

var shootingstar:Loader = new Loader(); 
shootingstar.load(new URLRequest("http://i51.tinypic.com/m8jp7m.png")); 
shootingstar.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadingComplete); 
var ssd:Sprite = new Sprite(); 
function onLoadingComplete(event:Event):void 
{ 
    ssd.addChild(event.currentTarget.loader.content); 
    ssd.addEventListener(MouseEvent.MOUSE_DOWN, drag); 
    ssd.addEventListener(MouseEvent.MOUSE_UP, drop); 
    ssd.addEventListener(MouseEvent.DOUBLE_CLICK, rotate) 
ssd.height=180 
ssd.width=124 
} 
function drag(event:MouseEvent):void{ 
    ssd.startDrag() 
    } 
function drop(event:MouseEvent):void{ 
    ssd.stopDrag() 
} 
function rotate():void{ 
    ssd.rotation(90) 
} 

回答

3

錯誤提示旋轉方法不可訪問,即私有或受保護。因此,您無法像在代碼旋轉中那樣直接調用它(90)。

相反,你應該使用旋轉公共財產

rotation = 90; 

由於superfro指出的那樣,你也應該從需要的MouseEvent參數rotate方法得到一個錯誤。所以實際上..

function rotate(event:MouseEvent):void 
{ 
    ssd.rotation = 90; 
} 

最後,可以確保雪碧的doubleClickEnabled屬性設置爲true

function onLoadingComplete(event:Event):void 
{ 
    ssd.doubleClickEnabled = true; 
    etc.... 
+0

sd.doubleClickEnabled = true; 我需要啓用doubleclick – starfox55 2010-11-10 22:57:31

0

您試過ssd.rotation = 90;

+0

啊,但沒有奏效。我看到一個帖子,他們用括號 – starfox55 2010-11-10 04:56:05

+0

ssd.rotation = 90應該是正確的。檢查文檔http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/DisplayObject.html#rotation – superfro 2010-11-10 05:09:50

+0

你的rotate()函數應該定義爲rotate(event:MouseEvent):void像其他鼠標一樣事件處理程序,在函數內部添加一個跟蹤(「測試」),並查看雙擊時是否顯示輸出。也許你的功能沒有被調用? – superfro 2010-11-10 05:12:17