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

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

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

Регистрация: Apr 2014
Сообщений: 97
По умолчанию Как дать доступ к объекту другой функции в основном классе

Если вы создали в функции Main основного класса объект, то чтобы изменить его значение в другой функции этого класса что надо сделать.

Почему-то такой код работает (то есть меняет значение text1 c "Text" на "Hello" после запуска программы:
Код AS3:
package {
	/**
	 * ...
	 * @author Scorpion
	 */
	import flash.events.*;
	import flash.display.*;
	import flash.text.*;
	import myClasses.*;
 
	public class Main extends Sprite 
	{
		public function Main() 
		{
			if (stage) 
			init();
			else
			addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		public function init(): void 
		{
			addChild(Image.addImage(0, 0, "background"));
			addChild(Image.addImage(0, 0, "head"));
			addChild(Image.addImage(0, 200, "menuline"));
 
			var text1: TextF = new TextF;
			addChild(text1.addText("Text", 100, 200));
			text1.changeText("Hello");
 
			var button: Button = new Button;
			addChild(button.addButton(200, 200)).addEventListener(MouseEvent.CLICK, funButton);
		}
	}
}
А такой (которые должен бы был менять значение после нажатия конпки) - нет:
Код AS3:
package {
	/**
	 * ...
	 * @author Scorpion
	 */
	import flash.events.*;
	import flash.display.*;
	import flash.text.*;
	import myClasses.*;
 
	public class Main extends Sprite 
	{
		public function Main() 
		{
			if (stage) 
			init();
			else
			addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		public function init(): void 
		{
			addChild(Image.addImage(0, 0, "background"));
			addChild(Image.addImage(0, 0, "head"));
			addChild(Image.addImage(0, 200, "menuline"));
 
			var text1: TextF = new TextF;
			addChild(text1.addText("Text", 100, 200));
 
			var button: Button = new Button;
			addChild(button.addButton(200, 200)).addEventListener(MouseEvent.CLICK, funButton);
		}
 
		public function funButton(e:MouseEvent): void
		{
			text1.changeText("Hello");
		}
	}
}
Ну а вот собственно сам класс TextF:
Код AS3:
package myClasses 
{
	/**
	 * ...
	 * @author Scorpion
	 */
	import flash.events.*;
	import flash.display.*;
	import flash.text.*;
 
	public class TextF extends Sprite
	{
		public var text: TextField = new TextField;
 
		public function addText(value: String, x: int, y: int): TextField 
		{
			text.text = value;
			text.x = x;
			text.y = y;
			text.autoSize = "left";
 
			var format: TextFormat = new TextFormat;
			format.size = 40;
			format.font = "Monotype Corsiva";
 
			text.setTextFormat(format);
 
			return text;
		}
 
		public function changeText(newText: String): void
		{
			text.text = newText;
 
			var format: TextFormat = new TextFormat;
			format.size = 40;
			format.font = "Monotype Corsiva";
 
			text.setTextFormat(format);
		}
	} 
}
Когда в функции funButton в Main ввожу text1 оно вообще не видит его как существующую переменную (то есть после funButton. не выводится список методов, которые можно вызвать).

Добавлено через 15 минут
Стоп, ко мне пришло озарение ... надо было public var text1: TextF = new TextF; прописать не в функции Main, а в классе. А без этого обеспечить доступ переменной из функции в функцию нельзя?

Добавлено через 20 минут
Видно нельзя ... но почему-то никто тут мне не говорил, что объявлять переменные, которые используются в нескольких функциях класса, надо в классе, а не в главной функции(((

Создать новую тему   Часовой пояс GMT +4, время: 12:16.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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