Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Ошибка дебагера Помогите устранить (http://www.flasher.ru/forum/showthread.php?t=120246)

MafiaBoy 15.01.2009 14:04

Ошибка дебагера Помогите устранить
 
Следующая ошибка TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать CubeWithDifferentSides_backAsset@42831f1 в flash.display.BitmapData.
at CubeWithDifferentSides()[C:\Documents and Settings\User\Рабочий стол\MagicCube\CubeWithDifferentSides.as:45]

Код не работает,только чёрный экран на странице, при компиляции также ошибок не было!
Но вот только дебагер замечает что что-то не так..

mre 15.01.2009 14:23

Если даже русский текст ошибки Вам непонятен, то тут ничем не поможешь.

MafiaBoy 15.01.2009 15:13

и что мне делать?
проблему решать же надо!

Добавлено через 2 минуты
Код AS3:

package
{
        import flash.display.Bitmap;
        import flash.events.Event;
 
        import org.papervision3d.lights.PointLight3D;
        import org.papervision3d.materials.BitmapMaterial;
        import org.papervision3d.materials.shaders.PhongShader;
        import org.papervision3d.materials.shaders.ShadedMaterial;
        import org.papervision3d.materials.shaders.Shader;
        import org.papervision3d.materials.utils.MaterialsList;
        import org.papervision3d.objects.primitives.Cube;
        import org.papervision3d.view.BasicView;
 
        [SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")]
        public class CubeWithDifferentSides extends BasicView
        {
                [Embed(source="assets/back.jpg")]
                private var backAsset:Class;
 
                [Embed(source="assets/bottom.jpg")]
                private var bottomAsset:Class;
 
                [Embed(source="assets/front.jpg")]
                private var frontAsset:Class;
 
                [Embed(source="assets/left.jpg")]
                private var leftAsset:Class;
 
                [Embed(source="assets/right.jpg")]
                private var rightAsset:Class;
 
                [Embed(source="assets/top.jpg")]
                private var topAsset:Class;
 
                private var light:PointLight3D;
                private var cube:Cube;
 
                public function CubeWithDifferentSides()
                {
                        var materialsList:MaterialsList = new MaterialsList();
 
                        light = new PointLight3D();
 
                        materialsList.addMaterial(new BitmapMaterial( new backAsset(), true ), "back");
                        materialsList.addMaterial(new BitmapMaterial( new bottomAsset(), true ), "bottom");
                        materialsList.addMaterial(new BitmapMaterial( new frontAsset(), true ), "front");
                        materialsList.addMaterial(new BitmapMaterial( new leftAsset(), true ), "left");
                        materialsList.addMaterial(new BitmapMaterial( new rightAsset(), true ), "right");
                        materialsList.addMaterial(new BitmapMaterial( new topAsset(), true ), "top");
 
                        cube = new Cube(materialsList, 500, 500, 500, 5, 5, 5);
                        scene.addChild(cube);
                        cube.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onCubeClick);
 
                        startRendering();
                }
 
 
                override protected function onRenderTick(event:Event=null):void
                {
                        cube.rotationY += (viewport.containerSprite.mouseX - cube.rotationY) * .1;
                        cube.rotationX += (viewport.containerSprite.mouseY - cube.rotationX) * .1;
                        renderer.renderScene(scene, camera, viewport);
                }
 
                private function onCubeClick(e:InteractiveScene3DEvent):void {
                        switch(e.face3d.material.name) {
      case 'front':
        navigateToURL(new URLRequest('http://mySite.com/1'));
      break;
      case 'back':
        navigateToURL(new URLRequest('http://mySite.com/2'));
      break;
      case 'left':
        navigateToURL(new URLRequest('http://mySite.com/3'));
      break;
      case 'right':
        navigateToURL(new URLRequest('http://mySite.com/4'));
      break;
  }
 
                }
        }
}


fljot 15.01.2009 15:36

Код AS3:

materialsList.addMaterial(new BitmapMaterial( new backAsset(), true ), "back");

вот здесь видимо вылазит ошибка и _русским языком_ вам пишет "не могу преобразовать CubeWithDifferentSides_backAsset@42831f1 в flash.display.BitmapData."
посмотрите, какие параметры (тип) принимает BitmapMaterial, и посмотрите что на самом деле вы туда передаёте

MafiaBoy 15.01.2009 15:39

а как это сделать?

etc 15.01.2009 15:47

Цитата:

Сообщение от MafiaBoy (Сообщение 790849)
а как это сделать?

Документацию к pv3d почитать.

MafiaBoy 15.01.2009 15:57

спасибо господа
я решил, но вот теперь только ссылки на гранях не работают...
Это почему?

Добавлено через 31 минуту
Может я чтоөто упустил, но щелчка по грани не происходит!

Добавлено через 47 минут
Код AS1/AS2:

private function onCubeClick(event:MouseEvent):void {
                        switch(e.face3d.material.name) {
                case 'back':
                        navigateToURL(new URLRequest('http://ebay.com/'));
                break;
                case 'front':
                        navigateToURL(new URLRequest('http://google.com/'));
                break;
                case 'left':
                        navigateToURL(new URLRequest('http://myspace.com/'));
                break;
                case 'right':
                        navigateToURL(new URLRequest('http://ebay.com/'));
                break;
                }
        }

я изменил код и при компиляции получаю следующую ошибку
C:\Documents and Settings\User\Рабочий стол\MagicCube\CubeWithDifferentSides.as(72): col: 33 Error: Обращение несуществующего свойства e.
switch(e.face3d.material.name) {

etc 15.01.2009 16:49

Потому что внимательнее надо писать код и понимать, что этот код делает.

MafiaBoy 15.01.2009 16:52

ну я школьник я же учусь...
что следует использовать за место e.face3d.material.name

etc 15.01.2009 16:53

Ну вы вообще понимаете, что делает этот switch? Что вообще это за обработчик, который вы написали?
Код нужно понимать, а не бездумно втыкать его куда-попало, даже не разбираясь в нём.


Часовой пояс GMT +4, время: 01:09.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.