2010-11-10 82 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