2016-06-06 2 views
2

Так что я собираю школьный проект и начинаю jsut, я делаю викторину во флеш-ролике c использованием as3. Но когда я компилирую свой код, я просто получаю сообщение об ошибке: TypeError: Error # 1034: Type Coercion failed: невозможно преобразовать spr4 $ в flash.display.MovieClip. Теперь я знаю, что был задан вопрос, но я не нашел ни одного ответа, который работает на моей простой код здесь:Ошибка # 1034 flash/animate 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. Вы уверены, что все элементы в ваших массивах - это MovieClips? Вы можете легко изменить свои vars как 'DisplayObjects', так как все, что вы делаете, это установка ширины/высоты и позиции – BadFeelingAboutThis

+0

Не могли бы вы дать мне краткое описание того, как это сделать? Как вы понимаете, я не так хорош в as3. Большое вам спасибо за вашу помощь! – TubbyS

+0

объекты sprx и altxx должны быть фрагментами роликов. Я сделал их с помощью меню вставки, выбрав тип клипа, а затем добавив ссылку на sprx и altxx. – TubbyS

ответ

0

Ваш вопрос связан с природой классов и экземпляров.

В вашей библиотеке, если вы установили флажок «экспорт для ActionScript» и дали имя класса этого объекта библиотеки (скажем, вы дали один на имя класса spr1), то в вашем коде, spr1 относится к class (не экземпляр).

Если вам нужен экземпляр, вам необходимо создать его экземпляр из класса. Так что в вашем случае, чтобы получить новый экземпляр 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 или addChildAt метода:

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, который имеет ответы о различиях между сла ослы и примеры, если вы хотите узнать больше.

+0

Итак, это устранило ошибку, которую я принимаю как знак того, что она сработала, но теперь, как я могу сделать мувиклип на сцене? По какой-то причине этого не происходит. – TubbyS

+0

Nevermind. Если вы читаете это позже и глупо, как я: используйте addChild (yourMoviecliphere); сделайте объект до сцены. Большое вам спасибо за помощь BadFelling! – TubbyS

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