Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.03.2006, 18:10
Andromed вне форума Посмотреть профиль Отправить личное сообщение для Andromed Найти все сообщения от Andromed
  № 1  
Ответить с цитированием
Andromed

Регистрация: Aug 2005
Сообщений: 83
Код:
class testclass {
	private var Arr:Array = [];
	private var ExtCanvas:MovieClip;
	public function testclass(place:MovieClip) {
		this.ExtCanvas = place;
		this.ExtCanvas.createEmptyMovieClip("Canvas", this.ExtCanvas.getNextHighestDepth());
	}
	public function showtext() {
		if (ExtCanvas.Canvas["TextBlock"+Arr.length] == undefined) {
			ExtCanvas.Canvas.createTextField("TextBlock"+Arr.length, ExtCanvas.Canvas.getNextHighestDepth(), 0, 0, 300, 30);
		}
		var txtBlock:TextField = ExtCanvas.Canvas["TextBlock"+Arr.length];
		txtBlock.type = "dynamic";
		txtBlock.multiline = true;
		txtBlock.text = "npeBeg, kpacaB4er !!!";
		Arr.push(txtBlock);
		//
		trace(txtBlock.text);
	}
}

Старый 23.03.2006, 19:08
Danilishin вне форума Посмотреть профиль Найти все сообщения от Danilishin
  № 2  
Ответить с цитированием
Danilishin
 
Аватар для Danilishin

Регистрация: Aug 2004
Сообщений: 83
Спасибо! Идею понял, этот вариант работает, но он мне подсказал еще лучшее решение для моего класса, позволяющее совсем отказаться от массива и упростить код. Просмотрел класс (не этот что в топике, а рабочий, полная версия), действительно это может значительно упростить весь код (а кода там достаточно много).
Весь прикол в том, что ранее я не догадался использовать конструкцию:
Мувик1.Мувик2["Название_элемента"]



// ----------------
public function showtext() {
var j:Number = 1;
ExtCanvas.Canvas.createTextField("TextBlock"+j,ExtCanvas.Canvas.getNextHighestDepth(),0,0,300,30);
ExtCanvas.Canvas["TextBlock"+j].type = "dynamic";;
ExtCanvas.Canvas["TextBlock"+j].multiline = true;
ExtCanvas.Canvas["TextBlock"+j].text = "npeBeg, kpacaB4er !!!";
}

Всем спасибо!

Старый 23.03.2006, 19:12
Andromed вне форума Посмотреть профиль Отправить личное сообщение для Andromed Найти все сообщения от Andromed
  № 3  
Ответить с цитированием
Andromed

Регистрация: Aug 2005
Сообщений: 83
а ты гдето уже опередил j элемент массива ? обращаться к несуществуемому элеменету как минимум не корректно
удачи

Старый 23.03.2006, 19:14
Danilishin вне форума Посмотреть профиль Найти все сообщения от Danilishin
  № 4  
Ответить с цитированием
Danilishin
 
Аватар для Danilishin

Регистрация: Aug 2004
Сообщений: 83
да, с этим все ок


Последний раз редактировалось Danilishin; 23.03.2006 в 19:20.
Старый 23.03.2006, 19:23
Andromed вне форума Посмотреть профиль Отправить личное сообщение для Andromed Найти все сообщения от Andromed
  № 5  
Ответить с цитированием
Andromed

Регистрация: Aug 2005
Сообщений: 83
я не о том я просто предпологаю что ты создаешь Н текстовых полей, и для себя любомого складываешь их в массив, что у тебя было в первоночальном коде,
ты просто говорил arr[j]=чемуто там, а масив перед этим был у тебя пустой, это не правильно и писать так не следует и вот мне почемуто показалось что ты чтото подобное написал гдето выше, вот решил предупредить

Старый 23.03.2006, 19:34
Danilishin вне форума Посмотреть профиль Найти все сообщения от Danilishin
  № 6  
Ответить с цитированием
Danilishin
 
Аватар для Danilishin

Регистрация: Aug 2004
Сообщений: 83
Цитата:
Сообщение от Andromed
ты просто говорил arr[j]=чемуто там, а масив перед этим был у тебя пустой, это не правильно и писать так не следует
а, понял, я просто когда писал топик, в спешке неправильно написал объявление массива. Следует писать так:
var Arr:Array = new Array();

В рабочей версии там все нормально
Спасибо за замечание.

Старый 23.03.2006, 19:42
Andromed вне форума Посмотреть профиль Отправить личное сообщение для Andromed Найти все сообщения от Andromed
  № 7  
Ответить с цитированием
Andromed

Регистрация: Aug 2005
Сообщений: 83
var Arr:Array = []; можно и так не суть важно , у тебя длина массива попрежнему была ровна 0, а ты уже обращаешься к j элементу как будто он уже сто лет там был, еслиб ты написал так
var Arr:Array = [new TextField(..........)];
то мог бы обращаться к 0 элементу массива...

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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