2014-10-09 4 views
0

Я новичок в AS3 и пытаюсь создать перетаскиваемый элемент. Тем не менее, я продолжаю получать ошибку 1061, и я не знаю, почему, потому что я уверен, что у меня нет орфографических ошибок или тому подобного. Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно?Ошибка AS3 1061 Ссылка со статическим типом

Вот мой код:

package { 

import flash.display.*; 
import flash.events.*; 
import flash.geom.Rectangle; 

public class Script extends MovieClip{ 
    public var value:Number; 

    private var max:Number; 
    private var min:Number; 

    public function Draggable(){ 
     min = erhu_mc.y; 
     max = erhu_mc.height - Erhu_H3_btn.height; 
     Erhu_H3_btn.addEventListener(MouseEvent.MOUSE_DOWN, dragHandle); 
    } 

    function dragHandle(event:MouseEvent):void { 
     Erhu_H3_btn.startDrag(new Rectangle, false,(0,min,0,max)); 
     stage.addEventListener(MouseEvent.MOUSE_UP, stopDragging); 
    } 

    function stopDragging(event:MouseEvent):void { 
     Erhu_H3_btn.stopDrag(); 
     stage.removeEventListener(MouseEvent.MOUSE_UP, stopDragging); 
    } 
    } 
} 
+1

Это потому, что 'Erhu_H3_btn' - это имя класса, а не имя экземпляра объекта на сцене. – Marty

+0

Я не понимаю ... «Erhu_H3_btn» - это имя моей кнопки, которая находится на моей сцене ... так почему же это класс, а не имя экземпляра? – Anne

ответ

0

Есть 2 проблемы с вашим текущим классом.

  1. Erhu_H3_btn.startDrag(new Rectangle, false,(0,min,0,max)); должно быть: Erhu_H3_btn.startDrag(false,new Rectangle(0,min,0,max));

  2. Вы не можете напрямую ссылаться на объекты из временной шкалы из класса. [ref] Вам нужно будет либо передать ссылку на объект, либо ссылку на сцену. Например, следующие возвращает нулевое значение:

    import flash.display.*; public class Script extends MovieClip { public function Script() { trace(stage); }

Я скопировал и код перебора режимов, так что он работает на раме .:

import flash.display.*; 
import flash.events.*; 
import flash.geom.Rectangle; 


var value:Number; 
var max:Number; 
var min:Number; 
Draggable(); 


function Draggable(){ 
min = Erhu_H3_btn.y; 
max = Erhu_H3_btn.y += 100; 
Erhu_H3_btn.addEventListener(MouseEvent.MOUSE_DOWN, dragHandle); 
} 

function dragHandle(event:MouseEvent):void { 
Erhu_H3_btn.startDrag(false,new Rectangle(0,min,0,max)); 
stage.addEventListener(MouseEvent.MOUSE_UP, stopDragging); 
} 

function stopDragging(event:MouseEvent):void { 
Erhu_H3_btn.stopDrag(); 
stage.removeEventListener(MouseEvent.MOUSE_UP, stopDragging); 
} 

Надеется, что это помогает.

+0

Извините, я получаю сообщение об ошибке «1061», «вызов возможно неопределенного метода с помощью ссылки со статическим типом flash.display: SimpleButton» для «startDrag» и «stopDrag» – Anne

+0

поместите это: ((simpleButtonMovieClipName) как SimpleButton) .startDrag ... или Положите это: ((simpleButtonMovieClipName) как MovieClip) .startDrag ... – Zze

+0

Я пробовал оба непосредственно под кодом, который вы мне дарили ... не избавился от 'error 1061'. Я также получаю 'error 1120', доступ к неопределенному свойству для обоих и ошибки 1119, доступ к возможно неопределенному свойству через ссылку со статическим типом flash.display: SimpleButton, для' ((simpleButtonMovieClipName) как SimpleButton) .startDrag' – Anne

Смежные вопросы