PDA

Просмотр полной версии : помогите с ошибкой , появилась ни с того ни с сего


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

ругается на:
id2 = mainPlate_.getChildAt(i - 2) as Element.id;

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

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


package main
{
import flash.display.*;
import flash.events.*;
import flash.text.*;
import fl.transitions.*;
import fl.transitions.easing.*;

public class Element 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;
}

public function get id():int
{
return _id;
}
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
id2 = mainPlate_.getChildAt(i - 2) as int
id2 = mainPlate_.getChildAt(i - 2) as Element
смотря что в id2

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

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

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

GBee
25.01.2012, 18:20
Да я ступил еще вариант
id2 = mainPlate_.getChildAt(i - 2).id;

A1R1NG
25.01.2012, 18:22
в id2 изначально записано -1, раньше же всё работало, записывался в id2 айдишник элемента....
работало вот так: (опечатался, поправил)
id2 = mainPlate_.getChildAt(i - 2) as Element.id;

Добавлено через 2 минуты
если
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
id2 = (mainPlate_.getChildAt(i - 2) as Element).id;
Скорее всего имелось ввиду вот это

GBee
25.01.2012, 18:32
не могло работать, скобок не хватает
id2 = (mainPlate_.getChildAt(i - 2) as Element).id;

A1R1NG
25.01.2012, 18:34
не могло работать, скобок не хватает
id2 = (mainPlate_.getChildAt(i - 2) as Element).id;

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

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

TanaTiX
25.01.2012, 18:57
А теперь название темы не раскрывает сути вопроса :)