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

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

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

Регистрация: Apr 2009
Сообщений: 167
Записей в блоге: 1
Attention Помогите с разделением кода

попытался я разбить один кусок кода на 2 и у меня нечего не вышло..
вот код целого куска:
Код AS3:
package CaptureUserInput {
 
	import flash.events.*;
	import flash.text.*;
	import flash.display.Stage;
	import flash.display.*;
 
	public class CaptureUserInput extends Sprite {
 
		private var myTextBox:TextField = new TextField();
		private var myOutputBox:TextField = new TextField();
		private var myText:String = "Type your text ";
 
		public function CaptureUserInput() {
 
			captureText();	
			greetingapp();
		}
		public function captureText():void {
 
			myTextBox.type = TextFieldType.INPUT;
			myTextBox.x = 10;
			myTextBox.y = 10;
			myTextBox.backgroundColor=0xFF0000;
			myTextBox.background = true;
			addChild(myTextBox);
			myTextBox.text = myText;
			myTextBox.addEventListener(TextEvent.TEXT_INPUT, textInputCapture);
		}
 
		public function textInputCapture(event:TextEvent):void  {
 
			var str:String = myTextBox.text;
			createOutputBox(str);
		}
 
		public function createOutputBox(str:String):void {
 
			myOutputBox.background = true;
			myOutputBox.backgroundColor=0x00FF00;
			myOutputBox.x = 200;
			myOutputBox.y = 10;
			addChild(myOutputBox);
			myOutputBox.text = str;			
		}
		public function greetingapp () {
               var circle:Sprite = new Sprite();
               circle.graphics.lineStyle (1);
               circle.graphics.beginFill (0xFF00CC, 1);
               circle.graphics.drawCircle (50, 100, 50);
               circle.x = 275;
               circle.y = 235;               
               circle.addEventListener (MouseEvent.CLICK, onMouseClick);
               addChild(circle);
          }
          private function onMouseClick (event:MouseEvent):void {
               trace("sss");
 
          }		
	}
}
я хотел вынести код функции greetingapp в отдельный файл, но у меня нечего не вышло..
что мне нужно добавить в основной код, что бы он запускал код из соседнего файла?

Старый 02.08.2009, 23:24
Dimax4d вне форума Посмотреть профиль Отправить личное сообщение для Dimax4d Найти все сообщения от Dimax4d
  № 2  
Ответить с цитированием
Dimax4d
 
Аватар для Dimax4d

Регистрация: Jul 2009
Адрес: Москва
Сообщений: 99
Создайте в соседнем файле новый класс и сделайте функцию greetingapp() его публичным методом

Старый 03.08.2009, 10:08
WRC_S вне форума Посмотреть профиль Отправить личное сообщение для WRC_S Посетить домашнюю страницу WRC_S Найти все сообщения от WRC_S
  № 3  
Ответить с цитированием
WRC_S
[+6 23.11.09]
 
Аватар для WRC_S

Регистрация: Jun 2009
Адрес: Россия
Сообщений: 318
Отправить сообщение для WRC_S с помощью ICQ
а зачем это надо? пусть в одном куске будет!

Старый 03.08.2009, 12:09
dixlofos вне форума Посмотреть профиль Отправить личное сообщение для dixlofos Найти все сообщения от dixlofos
  № 4  
Ответить с цитированием
dixlofos
 
Аватар для dixlofos

Регистрация: Apr 2009
Сообщений: 167
Записей в блоге: 1
да я вроде так и сделал..

основной кусок:
Код AS3:
package CaptureUserInput {
 
	import flash.events.*;
	import flash.text.*;
	import flash.display.Stage;
	import flash.display.*;
 
	public class CaptureUserInput extends Sprite {
 
		private var myTextBox:TextField = new TextField();
		private var myOutputBox:TextField = new TextField();
		private var myText:String = "Type your text ";
 
		public function CaptureUserInput() {
 
			captureText();				
		}
		public function captureText():void {
 
			myTextBox.type = TextFieldType.INPUT;
			myTextBox.x = 10;
			myTextBox.y = 10;
			myTextBox.backgroundColor=0xFF0000;
			myTextBox.background = true;
			addChild(myTextBox);
			myTextBox.text = myText;
			myTextBox.addEventListener(TextEvent.TEXT_INPUT, textInputCapture);
		}
 
		public function textInputCapture(event:TextEvent):void  {
 
			var str:String = myTextBox.text;
			createOutputBox(str);
		}
 
		public function createOutputBox(str:String):void {
 
			myOutputBox.background = true;
			myOutputBox.backgroundColor=0x00FF00;
			myOutputBox.x = 200;
			myOutputBox.y = 10;
			addChild(myOutputBox);
			myOutputBox.text = str;			
		}
	}
}
второй файл:

Код AS3:
package CaptureUserInput {
 
	import flash.display.Stage;
	import flash.display.*;
	import flash.events.*;
 
	public class greetingapp extends Sprite {	
 
	public function greetingapp() {
 
			greetingapp();			
		}
 
	public function greetingapp () {
               var circle:Sprite = new Sprite();
               circle.graphics.lineStyle (1);
               circle.graphics.beginFill (0xFF00CC, 1);
               circle.graphics.drawCircle (50, 100, 50);
               circle.x = 275;
               circle.y = 235;               
               circle.addEventListener (MouseEvent.CLICK, onMouseClick);
               addChild(circle);
          }
          private function onMouseClick (event:MouseEvent):void {
               trace("sss");
 
          }
	}
}
розовый круг не отображаеться!

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

Регистрация: Feb 2008
Адрес: N.Novgorod
Сообщений: 80
Отправить сообщение для alecsisk с помощью ICQ
создаёшь новый класс с именем ShapeCreator, пишешь:
Код AS3:
package {
 
	import flash.display.Sprite;
 
	public class ShapeCreator {
 
 
		static function createCircle (x:int, y:int, r:int, color:Number, alpha:Number = 1):Sprite {
			var circle:Sprite = new Sprite();
			circle.graphics.lineStyle(1);
			circle.graphics.beginFill(color, alpha);
			circle.graphics.drawCircle(x, y, r);
			return circle;
		}
	}
}
Он только создаёт нужную тебе фигуру. После этого тебе надо сделать из любого класса:
Код AS3:
var circle:Sprite = ShapeCreator.createCircle(50, 100, 50, 0xFF00CC, 1);
circle.x = 275; circle.y = 235;
circle.addEventListener (MouseEvent.CLICK, onMouseClick);
addChild(circle);
Можно конечно всё сделать в одном методе, но это сильно усложняет чтение кода.

Старый 03.08.2009, 14:32
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 6  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Код AS3:
addChild(<Display Object>);
Достаточно медленное существо, у тому же меняющее порядок отображения - аккуратней с ним.

И как alecsisk написал, лучше не делать, делайте по человечески.

Код AS3:
public class Circle extends Sprite
{
	private var _color:uint;
	private var _alpha:Number;
	private var _rad:Number;
	public function Circle(radius:Number = 10, color:uint = 0x000000, alpha:Number = 1)
	{
		_rad = radius;
		_color = color;
		_alpha = alpha;
		draw();
	}
 
	private function draw():void
	{
		var gr:Graphics = graphics;
		gr.beginFill(_color,_alpha);
		gr.drawCircle(0,0,_rad);
		gr.endFill();
	}
 
	public function set radius(value:Number):void
	{
		if (_rad != value)
		{
			_rad = value;
			draw();
		}
	}
	public function get radius():Number
	{
		return _rad;
	}
//		и т.д
}
Но на каждый кружек писать новый класс, это перебор

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

Регистрация: Apr 2009
Сообщений: 167
Записей в блоге: 1

что-то не первый не второй методы не помогли отцу русской демократии))

в первом случае компилятор ругаеться на все строки, добавленные в основной класс, а во втором.. просто тишина в радиоэфире

Старый 04.08.2009, 00:04
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 8  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
возможно вам нужно получше разобраться в то что вы делаете. Так как задача тривиальная.

Старый 04.08.2009, 00:48
alecsisk вне форума Посмотреть профиль Отправить личное сообщение для alecsisk Найти все сообщения от alecsisk
  № 9  
Ответить с цитированием
alecsisk

Регистрация: Feb 2008
Адрес: N.Novgorod
Сообщений: 80
Отправить сообщение для alecsisk с помощью ICQ
example.rar

Старый 04.08.2009, 13:08
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 10  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
alecsisk, можно вопрос, зачем вы разделяете код? Случаем не для того, чтоб у пользователей мобильный устройств, при просмотре кода не было полосы прокрутки?

Код AS3:
package {
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	import flash.text.TextFieldType;
	import flash.text.TextFieldAutoSize;
	import flash.events.TextEvent;
 
	public class Main extends Sprite
	{
		private var _tf1:TextField = new TextField();
		private var _tf2:TextField = new TextField();
 
		private var _gap:Number = 10;
 
		public function Main ()
		{
			var circle:Circle = new Circle();
			circle.x = 275;
			circle.y = 235;
			circle.radius = 100;
			circle.color = 0xFF0000;
			circle.alpha = 0.4;
			addChild(circle);
			circle.addEventListener (MouseEvent.CLICK, onMouseClick);
 
			_tf1.type = TextFieldType.INPUT;
			addChild(_tf1);
			_tf1.background = true;
			_tf1.backgroundColor = 0xFF00FF;
			_tf1.multiline = true;
			_tf1.wordWrap = true;
 
			_tf2.autoSize = TextFieldAutoSize.LEFT;
			addChild(_tf2);
			_tf2.background = false;
			_tf2.wordWrap = true;
			_tf2.width = _tf1.width;
			_tf2.x = _tf1.width + _gap;
 
			_tf1.addEventListener(TextEvent.TEXT_INPUT,onTextInput);
		}
 
		private function onTextInput(e:TextEvent):void
		{
			_tf2.text = _tf1.text + e.text;
		}
 
		private function onMouseClick (e:Event):void
		{
			trace("click");
		}
	}
}
и

Код AS3:
package {
 
	import flash.display.Sprite;
	import flash.display.Graphics;
 
	public class Circle extends Sprite
	{
		private var _color:uint;
		private var _alpha:Number;
		private var _rad:Number;
 
		public function Circle(radius:Number = 10, color:uint = 0x000000, alpha:Number = 1)
		{
			_rad = radius;
			_color = color;
			_alpha = alpha;
			draw();
		}
 
		private function draw():void
		{
			var gr:Graphics = graphics;
			gr.clear();
			gr.beginFill(_color,_alpha);
			gr.drawCircle(0,0,_rad);
			gr.endFill();
		}
 
		public function set radius(value:Number):void
		{
			if (_rad != value)
			{
				_rad = value;
				draw();
			}
		}
 
		public function get radius():Number
		{
			return _rad;
		}
 
		public function set color(value:Number):void
		{
			if (_color != value)
			{
				_color = value;
				draw();
			}
		}
 
		public function get color():Number
		{
			return _color;
		}
 
		override public function set alpha(value:Number):void
		{
			if (_alpha != value)
			{
				_alpha = value;
				draw();
			}
		}
 
		override public function get alpha():Number
		{
			return _alpha;
		}
 
		final public function set $alpha(value:Number):void
		{
			super.alpha = value;
		}
 
		final public function get $alpha():Number
		{
			return super.alpha;
		}
	//		и т.д
	}
}
И если, dixlofos, вы не из разряда "сказал при устройстве на работу что знаю флеш, теперь вот нужно сделать, иначе уволят", то стоит почитать мука.

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

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

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


 


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


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