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

GrafMine 15.07.2011 04:37

Перенос массивов в другой класс
 
Мне нужно перенести массив с одного класса в другой,ну у меня не очень выходит...

первый файл AA.as
Код AS3:

private var cr:Array   = new Array();
private var c_s:Number  = 0;
private var cMC:Sprite = new Sprite();
private var points:Array = new Array();
private var my:Main;
 
private function cNC():void
                {
                        var c:Sprite = new CC(points, my); // заменить эту строку со второго файла (СС.as)
                        cr.push(c);
                        cMC.addChild(c);
                        ++c_s;
                }

Второй файл CC.as
Код AS3:

private var points:Array = new Array();
private var my:Main;
 
public function CC(pts:Array, t:Main):void
                {
                        points = pts;
                        my = t;
 
                        var s_p:Array = points[0];
 
                        x = cGP(s_p[0]);
                        y = cGP(s_p[1]);
 
                }

Я сделал так ну это не правильно ERROR:
Код AS3:

private var cr:Array   = new Array();
private var c_s:Number  = 0;
private var cMC:Sprite = new Sprite();
private var points:Array = new Array();
private var points_CC:Array = new Array();
private var my:Main;
 
private function cNC():void
                {
                        var s_p:Array = points_CC[0];
 
                        x = cGP(s_p[0]);
                        y = cGP(s_p[1]);
                        var c:Array = points_CC;
                        cr.push(c);
                        cMC.addChild(c);
                        ++c_s;
                }

Кто может подсказать что я упустил ?
За ранние благодарю.

goodguy 15.07.2011 09:38

Посмотрел этот код несколько минут, так и не понял, что тут нужно сделать.
Советую для начала избавиться от таких уродливых названий свойств, и писать код в соответствии с AS3 конвенциями. Читать такое очень напрягает, тем более без комментариев.

Цитата:

За ранние
за ранние подснежники, видимо...

Котяра 15.07.2011 12:56

Если "за ранние" спасибо, тогда "в крациях" так: прочитайте, что такое классы, каким образом они объявляются, и да, не забудьте прочитать про конвенции наименований.
Массивы тут вообще ни причём.

GrafMine 15.07.2011 14:50

Цитата:

Сообщение от goodguy (Сообщение 1011837)
Посмотрел этот код несколько минут, так и не понял, что тут нужно сделать.
Советую для начала избавиться от таких уродливых названий свойств, и писать код в соответствии с AS3 конвенциями. Читать такое очень напрягает, тем более без комментариев.
за ранние подснежники, видимо...

Согласен с названиями свойств, а по поводу вопроса мне нужно CC.as перенести в AA.as , в моем случае когда я делаю у меня вылетает ошибка :
[Fault] exception, information=TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
на
Код AS3:

x = cGP(s_p[0]);

Цитата:

Если "за ранние" спасибо, тогда "в крациях" так: прочитайте, что такое классы, каким образом они объявляются, и да, не забудьте прочитать про конвенции наименований.
Массивы тут вообще ни причём.
Все это я в принцепи знаю, просто не могу понять почему объект сразу теряется...

Alkaz 15.07.2011 15:35

Ваш русский язык и наименование переменных в коде напрочь отбивают желание разбираться в проблеме.
Однако же. Я так понял задача была перенести код из одного места в другое? Вроде бы это худо бедно сделано. Ошибка конкретно здесь:
Код AS3:

var s_p:Array = points_CC[0]; // == null

Видимо массив points_CC пуст, вы уверены что его заполняете? В старом коде передавался массив points, который вероятно в каком-то другом месте заполнялся, почему не использовать его?

GrafMine 15.07.2011 16:52

Цитата:

Сообщение от Alkaz (Сообщение 1011902)
Ваш русский язык и наименование переменных в коде напрочь отбивают желание разбираться в проблеме.
Однако же. Я так понял задача была перенести код из одного места в другое? Вроде бы это худо бедно сделано. Ошибка конкретно здесь:
Код AS3:

var s_p:Array = points_CC[0]; // == null

Видимо массив points_CC пуст, вы уверены что его заполняете? В старом коде передавался массив points, который вероятно в каком-то другом месте заполнялся, почему не использовать его?

Да вы все правильно поняли , сейчас немного поясню:
Код AS3:

//Попытаюсь еще рас поподробнее о вопросе рассказать 
var c:Sprite = new CC(points, my); // сюда входит и массив который объявлен в начале класса и [Object Main] (с главного класса Main)
// то есть когда я переношу сам класс CC в Main, я предпологаю что он уже не требует [Object Main] т.к. в нем находится поэтому я его "опускаю", и оставляю только points_CC:array , переименовую т.к. уже поинтс есть в данном классе.


Alkaz 15.07.2011 17:03

а код вообще ваш? :)
а то мои наводящие вопросы что-то не действуют.
попробуйте такой вариант:
Код AS3:

private var cr:Array   = new Array();
private var c_s:Number  = 0;
private var cMC:Sprite = new Sprite();
private var points:Array = new Array();
private var my:Main;
 
private function cNC():void
                {
                        var s_p:Array = points[0];
 
                        x = cGP(s_p[0]);
                        y = cGP(s_p[1]);
                        // что-то невообразимое и судя по всему ненужное закомментировано ниже
                        /*var c:Array = points_CC;
                        cr.push(c);
                        cMC.addChild(c);*/

                        ++c_s;
                }


GrafMine 15.07.2011 18:16

Ваш вариант выше описанный я уже пробовал он не подходит =(
вообще если не перемещать и когда все работает то при таком коде :
Код AS3:

private var points:Array = new Array();
private var my:Main;
 
public function CC(pts:Array, t:Main):void
                {
                        points = pts;
                        my = t;
 
                        var s_p:Array = points[0];
                        trace(points);
                        trace(s_p);       
                        x = cGP(s_p[0]);
                        y = cGP(s_p[1]);
                        trace(x,y);
                }
Output:
0,2,10,2,10,6,2,6,2,10,22,10,22,4,15,4,15,2,12,2,12,8,25,8
0,2
-10 30

Вот собственно мне надо без потерь перенести в другой класс )

Добавлено через 27 часов 48 минут
Все ошибку нашел и исправил, тему можно закрывать.


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

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