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

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

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

Регистрация: Jan 2002
Сообщений: 149
Отправить сообщение для billion с помощью ICQ
ну а там с привлечением байт кода или ЯВА?

типа сформировать свф и чем-то разобрать на запчасти? есть такие утилитки?

я уже придумал извращённый способ, но он всё таки требует ручную работу. хотелось бы максимально автоматизировать

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
http://www.as3commons.org/as3-common...ode/index.html
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 25.10.2012, 19:23
billion вне форума Посмотреть профиль Отправить личное сообщение для billion Посетить домашнюю страницу billion Найти все сообщения от billion
  № 13  
Ответить с цитированием
billion

Регистрация: Jan 2002
Сообщений: 149
Отправить сообщение для billion с помощью ICQ
Отлично! то что нужно!

парсит так:

Код:
[SWF]
  Header:
    Version: 17
    Compression: None
    FileLength: 202237
    FileLengthCompressed: 202237
    FrameSize: (278.95,259.4)
    FrameRate: 24
    FrameCount: 1
  Tags:
    [69:FileAttributes] AS3: true, HasMetadata: false, UseDirectBlit: false, UseGPU: false, UseNetwork: false
    [09:SetBackgroundColor] Color: #ffffff
    [86:DefineSceneAndFrameLabelData] 
      Scenes:
        [0] Frame: 0, Name: Scene 1
    [32:DefineShape3] ID: 1, Bounds: (0,5579,0,5188)
      FillStyles:
        [1] [SWFFillStyle] Type: 00 (solid), Color: #ff9933(b1)
        [2] [SWFFillStyle] Type: 00 (solid), Color: #ff9933(33)
        [3] [SWFFillStyle] Type: 00 (solid), Color: #ff9933(66)
        [4] [SWFFillStyle] Type: 00 (solid), Color: #3399ff(33)
        [5] [SWFFillStyle] Type: 00 (solid), Color: #3399ff(b1)
      LineStyles:
        [1] [SWFLineStyle] Width: 1 Color: #666666(33)
        [2] [SWFLineStyle] Width: 1 Color: #666666(ff)
        [3] [SWFLineStyle] Width: 1 Color: #000000(33)
        [4] [SWFLineStyle] Width: 1 Color: #000000(ff)
      ShapeRecords:
        [0] [SWFShapeRecordStyleChange] MoveTo: 4283,2182, FillStyle0: 2, FillStyle1: 2, LineStyle: 1
        [1] [SWFShapeRecordStraightEdge] Vertical: 600
        [2] [SWFShapeRecordStraightEdge] General: -385,1119
        [3] [SWFShapeRecordStraightEdge] General: -1679,-578
        [4] [SWFShapeRecordStraightEdge] Vertical: -600
        [5] [SWFShapeRecordStyleChange] FillStyle1: 1, LineStyle: 2
        [6] [SWFShapeRecordStraightEdge] General: 385,-1119
        [7] [SWFShapeRecordStraightEdge] General: 1679,578
        [8] [SWFShapeRecordStraightEdge] General: -184,537
        [9] [SWFShapeRecordStyleChange] FillStyle1: 2, LineStyle: 1
        [10] [SWFShapeRecordStraightEdge] General: 184,63
        [11] [SWFShapeRecordStyleChange] MoveTo: 3898,3301
        [12] [SWFShapeRecordStraightEdge] Vertical: 600
        [13] [SWFShapeRecordStyleChange] MoveTo: 4099,2719, FillStyle1: 0, LineStyle: 2
        [14] [SWFShapeRecordStraightEdge] General: -201,582
        [15] [SWFShapeRecordStraightEdge] General: -1494,-514
        [16] [SWFShapeRecordStyleChange] FillStyle1: 2, LineStyle: 1
        [17] [SWFShapeRecordStraightEdge] General: -185,536
        [18] [SWFShapeRecordStyleChange] MoveTo: 5395,2100, FillStyle0: 1, FillStyle1: 1
        [19] [SWFShapeRecordStraightEdge] General: 184,63
        [20] [SWFShapeRecordStyleChange] FillStyle1: 0, LineStyle: 2
        [21] [SWFShapeRecordStraightEdge] Vertical: -600
        [22] [SWFShapeRecordStyleChange] FillStyle1: 2
        [23] [SWFShapeRecordStraightEdge] General: -184,537
        [24] [SWFShapeRecordStyleChange] FillStyle0: 2, LineStyle: 1
        [25] [SWFShapeRecordStraightEdge] General: -4354,-1500
        [26] [SWFShapeRecordStraightEdge] General: -856,2489
        [27] [SWFShapeRecordStyleChange] FillStyle1: 1, LineStyle: 2
        [28] [SWFShapeRecordStraightEdge] General: 4353,1499
        [29] [SWFShapeRecordStraightEdge] General: 857,-2488
        [30] [SWFShapeRecordStyleChange] MoveTo: 1041,0, FillStyle1: 2, LineStyle: 1
        [31] [SWFShapeRecordStraightEdge] Vertical: 600
        [32] [SWFShapeRecordStyleChange] MoveTo: 0,3625, FillStyle0: 1, FillStyle1: 1
        [33] [SWFShapeRecordStraightEdge] General: 185,-536
        [34] [SWFShapeRecordStyleChange] FillStyle1: 2, LineStyle: 2
        [35] [SWFShapeRecordStraightEdge] General: -185,-64
        [36] [SWFShapeRecordStyleChange] FillStyle1: 0
        [37] [SWFShapeRecordStraightEdge] Vertical: 600
        [38] [SWFShapeRecordStraightEdge] General: 4538,1563
        [39] [SWFShapeRecordStyleChange] FillStyle1: 1
        [40] [SWFShapeRecordStraightEdge] Vertical: -600
        [41] [SWFShapeRecordStyleChange] MoveTo: 2404,2787, FillStyle0: 2
        [42] [SWFShapeRecordStraightEdge] General: -185,-64
        [43] [SWFShapeRecordStyleChange] MoveTo: 2404,2787, FillStyle0: 1, FillStyle1: 0
        [44] [SWFShapeRecordStraightEdge] General: 200,-583
        [45] [SWFShapeRecordStyleChange] FillStyle1: 1
        [46] [SWFShapeRecordStraightEdge] Vertical: -600
        [47] [SWFShapeRecordStyleChange] MoveTo: 0,3025, FillStyle0: 0, FillStyle1: 2
        [48] [SWFShapeRecordStraightEdge] General: 1041,-3025
        [49] [SWFShapeRecordStraightEdge] General: 4538,1563
        [50] [SWFShapeRecordStyleChange] MoveTo: 2604,2204, FillStyle0: 1, FillStyle1: 0
        [51] [SWFShapeRecordStraightEdge] General: 1495,515
        [52] [SWFShapeRecordStyleChange] MoveTo: 5579,2163, FillStyle0: 0, FillStyle1: 1
        [53] [SWFShapeRecordStraightEdge] General: -1041,3025
        [54] [SWFShapeRecordEnd]
    [26:PlaceObject2] Depth: 1, CharacterID: 1, Matrix: (1,1,0,0,0,0)
    [82:DoABC] Lazy: true, Length: 201892
    [76:SymbolClass] 
      Symbols:
        [0] TagID: 0, Name: Generator
    [01:ShowFrame] 
    [00:End] 
  Scenes:
    Name: Scene 1, Frame: 0
  Frames:
    [0] Start: 0, Length: 8
      Defined CharacterIDs: 1
      Depth: 1, CharacterId: 1, PlacedAt: 4, IsKeyframe

Старый 02.11.2012, 18:11
SpetZ_Naz вне форума Посмотреть профиль Отправить личное сообщение для SpetZ_Naz Найти все сообщения от SpetZ_Naz
  № 14  
Ответить с цитированием
SpetZ_Naz

Регистрация: Aug 2012
Сообщений: 77
Не могли бы Вы дать пояснения, что это за набор данных "Парсинга", как он получен и как его использовать?

Может подскажете, как рисовать на Шейпе мышкой и регистрировать события на нем?

Старый 02.11.2012, 18:17
billion вне форума Посмотреть профиль Отправить личное сообщение для billion Посетить домашнюю страницу billion Найти все сообщения от billion
  № 15  
Ответить с цитированием
billion

Регистрация: Jan 2002
Сообщений: 149
Отправить сообщение для billion с помощью ICQ
подключайте вышеуказанную библиотеку и пользуйте так:

Код AS3:
package  {
 
	import flash.display.MovieClip;
	import com.codeazur.as3swf.SWF;
 
 
	public class Generator extends MovieClip {
 
 
		public function Generator() {
			var swf:SWF = new SWF(root.loaderInfo.bytes);
			var txt:String = swf.toString();
			trace(txt);
		}
	}
 
}
мне необходим был только текст свф-ки. дальше я его распарсил во Флэш Билдере.

координаты странные, но понять можно. во первых каждая следующая прибавляется к предыдущей, во вторых каждое число надо разделить на 20.... почему так не знаю, но выяснил методом научного тыка

Старый 02.11.2012, 18:54
SpetZ_Naz вне форума Посмотреть профиль Отправить личное сообщение для SpetZ_Naz Найти все сообщения от SpetZ_Naz
  № 16  
Ответить с цитированием
SpetZ_Naz

Регистрация: Aug 2012
Сообщений: 77
Ну, мне в общем то не нужен текст свф'ки. Можно каким-то образом повесить события на Shape'овскую область? Как задать размер шейповской области?
Привожу код, правильно ли я на шейпе рисую и ищу нужный мне цвет? В принципе работает, но мне кажется, что я на сцене рисую...
Код AS3:
import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.MovieClip;
	import flash.display.Shape;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Point;
 
	public class PaintBall extends MovieClip
	{
		var child:Shape = new Shape();
		var bmd:BitmapData;
 
		public function PaintBall()
		{	
			addChild(child);
			stage.addEventListener(MouseEvent.MOUSE_DOWN, onMD);
			stage.addEventListener(MouseEvent.MOUSE_UP, onMU);	
		}
 
		public function onMD (e:MouseEvent):void{
			var to_x = e.localX;
			var to_y = e.localY;
			child.graphics.lineStyle(2, 0x000000, 100, true, "normal", "none");
			child.graphics.moveTo(to_x,to_y)
			stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}
 
		public function enterFrameHandler(event:Event):void {
			var m_x:Number = stage.mouseX;
			var m_y:Number = stage.mouseY;
			if((m_x>5 && m_x<200) && (m_y>5 && m_y<200)){
				child.graphics.lineTo(child.mouseX, child.mouseY);
			}
		}
		public function onMU(event:MouseEvent):void {
			stage.removeEventListener("enterFrame", enterFrameHandler);
 
			bmd = new BitmapData (200, 200);
			bmd.draw(child);
 
			var coords:Point = null;
			for (var i:uint = 0; i<bmd.width; i++){
				for (var j:uint = 0; j<bmd.height; j++){					
					if (bmd.getPixel(i,j) == 0x000000){
						coords = new Point(i, j);
						trace('черный цвет найден по адресу:' + coords);
					}
				}
			}
		}
	}
}
Добавлено через 3 минуты
Дабы мою тему не загружать этим вопросом, попробую здесь разобраться

Старый 02.11.2012, 20:15
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 17  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
1. Не на сцене. "child.graphics.lineTo(child.mouseX, child.mouseY);". Вы собственный код не понимаете? Вы не выучите язык, нажимая "копировать" и "вставить".
2. Как задать размер шейповской области? Никак. Нет никакой области. Сколько нарисуете, столько и будет "область".
3. "Повесить на шейп события" нельзя. Шейп не наследует InteractiveObject, то есть не слушает мышь и клавиатуру. Используйте Sprite, что может быть проще?
4. Я, признаться, думал, что Вами движет просто любопытство. Потому что всерьез искать через битмапдату координаты, по которым САМ ЖЕ только что рисовал графиксом — такое даже во сне не приснится.
__________________
Reality.getBounds(this);

Старый 02.11.2012, 21:14
SpetZ_Naz вне форума Посмотреть профиль Отправить личное сообщение для SpetZ_Naz Найти все сообщения от SpetZ_Naz
  № 18  
Ответить с цитированием
SpetZ_Naz

Регистрация: Aug 2012
Сообщений: 77
Цитата:
Wolsh
Вы собственный код не понимаете? Вы не выучите язык, нажимая "копировать" и "вставить".
Я не все пока что понимаю, согласен.
Мне интересно с чего Вы начинали..

Я понимаю, что тут полно таких же как я, новичков, не дочитавших как следует теорию и рвущихся уже программировать, но не судите строго, я стараюсь практиковать не забывая читать теорию (Колин Мук). Надеюсь через Вас, старших товарищей по программированию, с подсказками и тумаками, выйти на уровень программирования, а не переписывания, хоть и лепить код с разных справок и источников - это уже не переписывание, кое что я всетаки понимаю.

Цитата:
Используйте Sprite, что может быть проще?
Sprite или MovieClip - есть разница? Что тяжелее для, так скажем, памяти? Разве рисование на Shape не легче системно переносится?

Цитата:
Я, признаться, думал, что Вами движет просто любопытство. Потому что всерьез искать через битмапдату координаты, по которым САМ ЖЕ только что рисовал графиксом — такое даже во сне не приснится.
Да я понимаю Ваше недоумевание. Возможно рисуя линии нужно было бы сразу записывать координаты в массив точек, чтобы их позже циклом отобразить. Надеюсь Вы подскажете как это таки сделать правильно на примерах или дав источники.

Да и вообще, спасибо за внимание, радует что есть люди, которые могут дать грамотные ответы на глупые вопросы.

Старый 02.11.2012, 23:17
billion вне форума Посмотреть профиль Отправить личное сообщение для billion Посетить домашнюю страницу billion Найти все сообщения от billion
  № 19  
Ответить с цитированием
billion

Регистрация: Jan 2002
Сообщений: 149
Отправить сообщение для billion с помощью ICQ
самый грамотный само-ответ - будет прочитать любую книгу по АС3 или ФЛЭШ для того чтобы хотя бы базовые понятия знать. поищите в инете. их там много

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Sprite или MovieClip - есть разница?
Мувиклип имеет таймлайн ("кадры") и методы/свойства для работы с этим таймлайном. Создавать мувиклипы программно смысла нет, так как практически невозможно создать в нем новые кадры. Конечно, мувиклип "тяжелее" спрайта.
Цитата:
Разве рисование на Shape не легче системно переносится?
Рисование переносится точно так же — рисованием занимается не шейп и не спрайт, а класс Graphics. Естественно, как мувиклип тяжелее спрайта, так же и спрайт тяжелее шейпа. Но вопрос то был не о рисовании, а об интерактивности. Шейп ей не обладает, спрайт обладает. Вот и весь выбор, собственно.
Цитата:
Возможно рисуя линии нужно было бы сразу записывать координаты в массив точек
Точнее, в Vector, который затем можно легко использовать как data в GraphicsPath, но для начала можно и в массив. Если бы рисовались только прямые отрезки от нажатия до отпускания, достаточно было бы брать координаты мыши в обработчике нажатия, и затем координаты в обработчике отпускания. Если же записываем по ENTER_FRAME или по MOUSE_MOVE, то соответственно в обработчике этих событий так же записываем в массив координаты мыши. Однако одним массивом не отделаться, потому что само графическое действие с координатами будет иметь два типа — lineTo() и moveTo(), когда новую координату не надо соединять линией с предыдущей. Соответственно, для каждой пары координат у вас должен быть указатель действия. В классе GraphicsPath например содержатся два Вектора — данные (координаты) и команды (простые целые числа 0, 1 и т.д.). Вектор команд в два раза короче Вектора координат, одной паре координат соответствует одна команда. В вашем случае можно при нажатии мышки записывать в массив команд 1, а в массив координат — координаты мыши из события. А далее в обработчике ентерФрейм записываем в команды 2 и в координаты — текущее положение мыши.
Вот и попробуйте сами написать код. Это гораздо полезней, чем собирать свою Войну и мир из чужих строчек.
__________________
Reality.getBounds(this);


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

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

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


 


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


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