2013-03-28 2 views
1

나는 이것을 조사해 보았고 위의 오류가 왜 나에게 나타나는지 보지 못했습니다. 내가 여기에 왔을 때 가장 가까이에 : strange Error 1006: %function_name% is not a function하지만 내 기본 타임 라인 인 프레임 1에 있기 때문에 실제로 적용되지 않습니다. 대신 "Main.as"클래스로 이동해야합니까?오류 # 1006 : 값이 함수가 아닙니다.

function centerContent(refItem:Object, xOffset:int, yOffset:int) { 
    this.x = (refItem.width - this.width)/2 + refItem.x + xOffset; 
    this.y = (refItem.height - this.height)/2 + refItem.y + yOffset; 
} 

// center the item in relation to another item 
a_mc.centerContent(another_mc, 0, 0); 

답변

2

MovieClip에서 기능을 프로토 타입하려고합니다. 그냥 어떤 DisplayObject을 전달할 수, 그렇지 않으면

var a_mc:Example = new Example(); 
a_mc.centerContent(obj, 0, 0); 

:

package 
{ 
    import flash.display.DisplayObject; 
    import flash.display.MovieClip; 

    public class Example extends MovieClip 
    { 
     public function Example() 
     { 
      super(); 
     } 

     public function centerContent(refItem:DisplayObject, xOffset:int, yOffset:int):void 
     { 
      this.x = (refItem.width - this.width)/2 + refItem.x + xOffset; 
      this.y = (refItem.height - this.height)/2 + refItem.y + yOffset; 
     } 

    } 
} 

그런 다음 당신은 당신의 centerContent 함수를 호출 할 수 있습니다 :

는 무비 클립에이 기능을 추가하려면 MovieClip 클래스를 확장 할 수 함수는 다음과 같습니다.

public function centerContent(object:DisplayObject, refItem:DisplayObject, xOffset:int, yOffset:int):void 
{ 
    object.x = (refItem.width - object.width)/2 + refItem.x + xOffset; 
    object.y = (refItem.height - object.height)/2 + refItem.y + yOffset; 
} 

그러면 다음과 같이 호출 할 수 있습니다.

centerContent(a_mc, obj, 0, 0); 
+0

사실 내 질문에 위의 답변보다 옳은 방향으로 이끌었습니다. 고맙습니다! – artcase

1

범위가 작동하는 방식에 대해 혼란스러워합니다.

기본적으로 centerContent은 클래스의 일부로, 해당 클래스의 하위에서 호출하려고합니다. 그것은 그렇게 작동하지 않습니다. 함수를 호출하려면 해당 함수가 자식 클래스 인 클래스에서 호출되어야합니다 (함수는 객체이며 MovieClip 또는 Sprite 또는 String과 동일 함).

-Main 
--Class1 
---another_mc 
---a_mc 
----function1 
----function2 
---centerContent() 
----refItem 
----xOffset 
----yOffset 

객체를 호출 할 수는 (다시, 함수는 객체이다) 부모와 아무것도에서 :

그래서, 그것을 이런 식으로 본다. 따라서 a_mc에서 a_mc에는 없지만 Class1에는 존재하지 않으므로 a_mc의 이미지에서 function1 및 function2 (a_mc.function1()a_mc.function2())를 호출 할 수 있지만 centerContent (a_mc.centerContent)는 호출 할 수 없습니다. 따라서 Class1.centerContent() (올바른 구문과 범위는 this.centerContent()을 사용하십시오) 또는 Class1.a_mc을 호출 할 수는 있지만 a_mc.centerContent()는 사용할 수 없습니다.

+0

'function centerContent (refItem : Object, movingItem : Object, xOffset : int, yOffset : int) ...'로 변경되었습니다. – artcase

+1

예. 이것이 이것을 처리하는 올바른 방법 일 것입니다. 그리고 당신의 함수에서'this'를'movingItem' (당신의 코드를 읽고 있다고 가정)과 바꾸십시오. 'this'는 부모 클래스를 가리 킵니다. 그러나 실제로 움직이기 원하는 것은 아닙니다. –

관련 문제