Форум 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=174437)

A1R1NG 25.01.2012 18:07

помогите с ошибкой , появилась ни с того ни с сего
 
1)обращение к возможно неопределённому методу id через ссылку статического типа Class
2)неявное исправление значения статического типа Object на возможный несвязанный тип int


ругается на:
Код AS3:

id2 = mainPlate_.getChildAt(i - 2) as Element.id;

этот код берёт айдишник клипа, который ледит под перетаскиваемым(отпускаемым) клипом

раньше всё было ок, но вдруг перестало компилиться, я в недоумении, помогите пожалуйста)


Код AS3:

package main
{
        import flash.display.*;
        import flash.events.*;       
        import flash.text.*;
        import fl.transitions.*;
        import fl.transitions.easing.*;
 
        public class <b>Elementb> extends MovieClip
        {
                private var _id:int = 0;
 
                public function Element( id:int, picture:Class, name:String )
                {
                        _id = id;
 
                        var pic:MovieClip = new picture();
                        pic.mouseEnabled = false;
                        var nameString:TextField = new TextField();
                        nameString.text = name;
                        nameString.background = false;
                        nameString.width = getWidth(name);
                        nameString.height = 22;
                        nameString.selectable=false;
                        nameString.border=false;
                        var format:TextFormat = new TextFormat();
                        format.font = "Consolas";
                        format.color = 0x000000;
                        format.size = 16;
                        format.align = TextFormatAlign.CENTER;
                        nameString.setTextFormat(format);
                        nameString.mouseEnabled = false;
                        this.addChild(pic);
                        this.addChild(nameString);
                        nameString.x=pic.x-getWidth(name)/2;
                        nameString.y=pic.y+20;
                        TransitionManager.start( pic, { type:Fade, direction:0, duration:0.5, easing:None.easeNone});
                }
                public function getWidth(text:String):uint
                {
                        var pix:uint = text.length*10;
                        return pix;
                }
 
                <b>public function get id():int
                {
                        return _id;
                }b>
                public function getStringNum(text:String):uint
                {
                        var stringNum:uint = 1;
                        for(var i:int=0;i<text.length;i++)
                        {
                                if(text.charCodeAt(i)==1)
                                {
                                        stringNum++;
                                }
                        }
 
                        return stringNum;
                }
                public function getHeigh(text:String):uint
                {
                        var pix:uint = getStringNum(text)*20;
                        return pix;
                }
        }
}


GBee 25.01.2012 18:12

Код AS3:

id2 = mainPlate_.getChildAt(i - 2) as int

Код AS3:

id2 = mainPlate_.getChildAt(i - 2) as Element

смотря что в id2

bav 25.01.2012 18:15

fix 1: если у вас в классе описан get-метод, то обращаться к id следует просто как к полю класса.
Код AS3:

id2 = mainPlate_.getChildAt(i - 2) as Element.id;

fix 2: вероятно метод getChildAt() возвращает объект класса DisplayObject. Непонятно каким образом он должен быть приведен к int, которым является Element.id.
fix 3: переименуйте тему - закроют.

GBee 25.01.2012 18:20

Да я ступил еще вариант
Код AS3:

id2 = mainPlate_.getChildAt(i - 2).id;


A1R1NG 25.01.2012 18:22

в id2 изначально записано -1, раньше же всё работало, записывался в id2 айдишник элемента....
работало вот так: (опечатался, поправил)
Код AS3:

id2 = mainPlate_.getChildAt(i - 2) as Element.id;

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

id2 = mainPlate_.getChildAt(i - 2).id;

пишет обращение возможного неопределённого свойства id через ссылку со статическим типом flash.display:GisplayObject

GBee 25.01.2012 18:27

Это ваш код?
Просто путать класс с экземпляром класса, дисплейобджект с интом, это как то странно.

A1R1NG 25.01.2012 18:28

мой, но писал пол года назад и уже забыл чё там как)) да и новичок я
я ж их не путаю, я не понимаю почему перестало работать, я ничего там не менял

Stitch512 25.01.2012 18:31

Код AS3:

id2 = (mainPlate_.getChildAt(i - 2) as Element).id;

Скорее всего имелось ввиду вот это

GBee 25.01.2012 18:32

не могло работать, скобок не хватает
Код AS3:

id2 = (mainPlate_.getChildAt(i - 2) as Element).id;


A1R1NG 25.01.2012 18:34

Цитата:

Сообщение от GBee (Сообщение 1059061)
не могло работать, скобок не хватает
Код AS3:

id2 = (mainPlate_.getChildAt(i - 2) as Element).id;


спасиба)) заработало, но я клянусь раньше работало и код не изменялся

можно закрывать


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

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