2016-06-06 2 views
2

그래서 저는 학교 프로젝트를 진행하고 있고, 시작하고 있습니다. as3을 사용하여 플래시 cc에서 퀴즈를 만들고 있습니다. 하지만 내 코드를 컴파일하면 오류가 발생합니다. TypeError : 오류 # 1034 : 형식 강제 변환에 실패했습니다. spr4 $를 flash.display.MovieClip으로 변환 할 수 없습니다. 는 지금은 질문 요청 받았다 알고,하지만 난 여기에 내 간단한 코드에서 작동 어떤 답을 발견하지 않았습니다 :오류 # 1034 플래시/애니메이션 cc as3

import flash.display.MovieClip; 
import flash.events.MouseEvent; 

stop(); 


var sprArray:Array = new Array(); 
sprArray[0] = [spr1, alt01, alt02, alt03]; 
sprArray[1] = [spr2, alt11, alt12, alt13]; 
sprArray[2] = [spr3, alt21, alt22, alt23]; 
sprArray[3] = [spr4, alt31, alt32, alt33]; 

btnNeste.addEventListener(MouseEvent.CLICK, neste); 

function neste (evt:MouseEvent){ 

    var randomSpr = Math.floor(Math.random()*4); 
    var spørsmål:MovieClip = sprArray[randomSpr][0]; 
    spørsmål.x = 30; 
    spørsmål.width = 150; 
    spørsmål.height = 100; 

    var svaralt1:MovieClip = sprArray[randomSpr][1]; 
    svaralt1.x = 30; 
    svaralt1.y = 50; 
    svaralt1.width = 100; 
    svaralt1.height = 100; 

    var svaralt2:MovieClip = sprArray[randomSpr][2]; 
    svaralt1.x = 60; 
    svaralt1.y = 50; 
    svaralt1.width = 100; 
    svaralt1.height = 100; 

    var svaralt3:MovieClip = sprArray[randomSpr][3]; 
    svaralt1.x = 90; 
    svaralt1.y = 50; 
    svaralt1.width = 100; 
    svaralt1.height = 100; 

} 
+0

오류는 'MovieClip'이 아닌 무언가에 대한 참조를 'MovieClip' var에 저장하려고하기 때문에 발생합니다. 배열의 모든 항목이 MovieClip입니까? 폭과 높이, 위치를 설정하는 것만으로도 쉽게 DisplayObjects가 될 수 있습니다. – BadFeelingAboutThis

+0

이 작업을 수행하는 방법에 대해 간단히 설명해 주시겠습니까? 당신이 이해 하듯이 나는 as3에서 위대하지 않습니다. 도와 주셔서 정말 감사합니다! – TubbyS

+0

sprx 및 altxx 객체는 무비 클립이어야합니다. 삽입 메뉴를 사용하여 동영상 클립 유형을 선택하고 나중에 sprx 및 altxx에 링크를 추가했습니다. – TubbyS

답변

0

문제는 클래스와 인스턴스의 성격과 관련이있다. 당신이 "ActionScript에 내보내기"상자를 확인하고 해당 라이브러리 객체에 대한 클래스 이름을 제공 한 경우 라이브러리에서

, 코드에서 다음 (의 말을하자 하나 spr1의 클래스 이름을 주었다) spr1은을 말한다 클래스 (인스턴스가 아님).

인스턴스를 원하면 클래스에서 인스턴스를 만들어야합니다. 귀하의 경우, spr1의 새로운 인스턴스를 얻을 수 있도록, 당신은 할 것 :

new spr1(); 

을 따라서, 귀하의 예를 들어 상황에 그것을 넣어 :

//sprArray[x] refers to classes, so you need use the 'new' keyword to create new instance of that class 
var spørsmål:MovieClip = new sprArray[randomSpr][0](); 

를 이제, 당신이 실제로보고 싶다면

addChild(spørsmål); //adds it to `this` (whatever display object this code is attached to) on top of everything else in `this` 

Here is a question CL의 차이점에 대한 답을 가지고 : 그 새로 만든 표시 객체, 당신은하는 AddChild 또는 addChildAt 방법을 사용하여 그것을 부모를 제공해야 엉덩이 및 인스턴스에 대한 정보를 얻을 수 있습니다.

+0

이렇게하면 오류를 제거했는데, 그 오류는 작동했음을 알리는 신호로 받아 들여지지만, 이제 어떻게 영화 클립을 장면에 표시 할 수 있습니까? 웬일인지 이런 일은 일어나지 않습니다. – TubbyS

+0

신경 쓰지 마세요. 나중에 이것을 읽고 나 같은 멍청하다면 : addChild (yourMoviecliphere); 개체를 무대에 보여주세요. BadFelling에 도움을 주셔서 대단히 감사합니다! – TubbyS

관련 문제