|
|
|||||
Регистрация: Jan 2010
Сообщений: 26
|
public массив
Как можно создать public массив, чтоб его можно было изменять из других классов?
класс с массивом package myclass { public class myglobal { public static const ww =700; public static const hh =700; public var enemyCrafts:Array; public function initArrays() { enemyCrafts = new Array(10); } public function addCraft(...) { enemyCrafts.push(...); } } } package { import myclass.myglobal; public class screen extends Sprite { public function screen() { myglobal.initArrays(); myglobal.addCraft(.....); } } } 1061: Call to a possibly undefined method initArrays through a reference with static type Class. 1061: Call to a possibly undefined method addCraft through a reference with static type Class. |
|
|||||
Регистрация: Jun 2006
Сообщений: 400
|
Вам нужно создать static массив. Вместо public напишите static.
А в вашем примере вы обращаетесь к классу, а методы и массив написали для экземпляра класса. Сделайте методы и массив статик и будет работать. Последний раз редактировалось proxiServer; 17.02.2010 в 18:25. |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Не вместо, а вместе
И названия классов принято писать с большой буквы. |
|
|||||
Если объявить массив как static var, то к нему можно будет обратиться из любого места программы
public class MyGlobal { public static var array:Array; public static function createArray() { MyGlobal.array = new Array(); } }
__________________
...вселенская грусть |
|
|||||
Регистрация: Jun 2006
Сообщений: 400
|
udaaff, ну можно и вместо, но будет warning) ошибся.
|
|
|||||
Регистрация: Jan 2010
Сообщений: 26
|
Это продолжение :-|
Я сначала тоже пробовал static но выбивало ошибку, теперь я понял из-за чего. Проблема вот в чем получилась Есть класс craftProperties.as package { public class craftProperties{ public var craftID:Number; public var craftColor:Number; public var craftType:Number; } } 10 таких классов нужно сохранить в массив который находится в классе myglobal myglobal.as package { import myclass.craftProperties; public class myglobal { public static const ww =700; public static const hh =700; public static var allCraftProperties:Array;/////<<<<<<<<<< public static function initArrays() { allCraftProperties=new Array(10); } public static function addCraftProp(crfprop:craftProperties) { allCraftProperties.push(crfprop); } } } Делаю я так: import myglobal; import craftProperties; myglobal.initArrays(); for (var i=0; i < 10 i++) { var crfpropEnemy:craftProperties=new craftProperties(); crfpropEnemy.craftID=i; crfpropEnemy.craftType=1; crfpropEnemy.craftColor=0xFFFFFF; myglobal.addCraftProp(crfpropEnemy); } А потом пытаюсь прочитать массив из 4-го класса craft.as package { import flash.display.Sprite; import myclass.myglobal; public class craft extends Sprite { public function craft() { trace(myglobal.allCraftProperties[1].craftType); } } } Что я неправильно сделал? Последний раз редактировалось sltt; 19.02.2010 в 04:46. |
|
|||||
Регистрация: Apr 2009
Сообщений: 117
|
Напиши так, возможно ситуация прояснится:
craft.as package { import flash.display.Sprite; import myclass.myglobal; public class craft extends Sprite { public function craft(){ trace("arr: " + myglobal.allCraftProperties); trace("arr.length: " + myglobal.allCraftProperties.length); trace("arr[1]: " + myglobal.allCraftProperties[1]); trace(myglobal.allCraftProperties[1].craftType); } } } Следовательно экземляр класса craft создается раньше, чем выполняется вот это: Последний раз редактировалось GentleFLASH; 18.02.2010 в 03:37. |
|
|||||
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Кстати, где то читал что злоупотреблять статичными переменными не стоит, это так?
Иногда стоишь перед выбором создать статичную переменную или просто скинуть ссылку на нее в пару конструкторов. |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Второе лучше.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
|
Часовой пояс GMT +4, время: 01:15. |
|
« Предыдущая тема | Следующая тема » |
|
|