![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 99
|
Передать параметры в обработчик события.
Скрипт грузит небольшие фотки (75*75, миниатюры) с сайта, как только фотка загрузилась, то создаётся bmpd: BitmapData, в нём рисуется фотка, потом содаётся var bmp:Bitmap=new Bitmap(bmpd) и tmp_mc:MovieClip. Далее tmp_mc становится слушателем события MouseEvent.CLICK и когда оно наступает, то сдвигается вправо (и он сдвигается). После этого код tmp_mc.addChild(bmp) этим я добавляю фотку к мувиклипу. Далее addChild(tmp_mc) чтобы мувик был виден. Такие образом: один мувик это одна фотка. Сайт хранит одну фотку в разных разрешениях. Короче на экране пользователь увидит миниатюры фоток, кликнув по которым откроется фотка в более высоком разрешении. Нужно чтобы при клике мышью по мувику, в центре экрана создавалось поле, в него загружалась фотка более высокого разрешения. Для этого надо чтобы при создании мувика ему было присвоено свойство tmp_mc.image_url = "http://site.ru/image_big_4.jpg" (четыре это номер фотки). Вот как раз передать строку image_url в обработчик события неполучается. var tf:TextField = new TextField(); tf.x = 100; tf.y = 10; tf.autoSize = "left"; tf.text = "testsdfwefwef"; addChild(tf); var q:Number = 0; function onLoadAva(e:Event) : void { //var loaderInfo:LoaderInfo = e.target as LoaderInfo; //var dispObj:DisplayObject = loaderInfo.content; var bmpd:BitmapData = new BitmapData (e.target.content.width, e.target.content.height,false); bmpd.draw(e.target.content,null,null,null,null,true); var bmp:Bitmap=new Bitmap(bmpd); bmp.width=75;bmp.height=75; bmp.smoothing=true; bmp.pixelSnapping = PixelSnapping.ALWAYS; tf.text = String(e.target.content); var tmp_mc:MovieClip = new MovieClip(); tmp_mc.addEventListener(MouseEvent.CLICK, function (e:Event):void { e.target.x+=50; tf.text = tmp_mc.x.toString(); /*var canvas:Sprite = new Sprite(); canvas.graphics.lineStyle(5, 0xFFD700, 1, false, LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER, 10); canvas.graphics.moveTo(e.target.x, e.target.y); canvas.graphics.lineTo(e.target.width, e.target.y); addChild(canvas);*/ }); tmp_mc.addChild(bmp); tmp_mc.x = 100*q; tmp_mc.y = 40; tmp_mc.width=75;tmp_mc.height=75; //tmp_mc.scaleX=0.75;tmp_mc.scaleY=0.75; tmp_mc.graphics.lineStyle(1, 0x000000, 1); tmp_mc.graphics.lineTo(tmp_mc.width, 0); tmp_mc.graphics.lineTo(tmp_mc.width, tmp_mc.height); tmp_mc.graphics.lineTo(0, tmp_mc.height); tmp_mc.graphics.lineTo(0, 0); addChild(tmp_mc); q = q+1; //tf.text = "q="+q+"\r"; } for (var i:Number = 0; i <= 10; i++) { var image_url:String = "http://site.ru/image_big_"+i+".jpg"; var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadAva); loader.load(new URLRequest(image_url)); }; Последний раз редактировалось zemozes; 11.07.2010 в 07:52. |
|
|||||
|
Modus ponens
|
Не делайте так никогда. Этот вопрос задавали очень много раз - в поиск.
http://www.flasher.ru/forum/showthre...E1%FB%F2%E8%FF http://www.flasher.ru/forum/showthre...E1%FB%F2%E8%FF например. И таких тем еще сотни были.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 99
|
Поиском то я искал. LOLEvent не заработал, выдаёт ошибку.
http://www.flasher.ru/forum/showpost...9&postcount=11 Добавлено через 7 минут Есть ещё одно решение, оно "как бы" не через задний проход. создать функцию, которая потом будет вызывать нужную уже с параметрами, и вписать её в ивент лисенер. http://www.flasher.ru/forum/showpost...0&postcount=11 это тоже не помогло Добавлено через 16 минут Сделал другим способом. Работает. Добавлено через 22 минуты Но это не то, ведь loaderInfo.url это встроенная переменная. А мне нужно передавать свои переменные. Добавлено через 1 час 0 минут Пробую сделать свой класс на основе loader - одни ошибки. Последний раз редактировалось zemozes; 11.07.2010 в 21:54. |
|
|||||
|
Modus ponens
|
Что такое встроенная переменная?
Не вижу ничего плохого в вызове другой функции. Пока что через задний проход написан только код в первом сообщении.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 99
|
Цитата:
Я имел ввиду переменная, объявленная в классе LoaderInfo >>>Не вижу ничего плохого в вызове другой функции. Я тоже ничего плохого в этом не вижу, пробовал так делать, не работает. >>>Пока что через задний проход написан только код в первом сообщении А что в нём не так? Добавлено через 36 минут Сделал класс Myloader на основе Loader, теперь работает. С дополнительным полем public var server:String; package { import flash.display.Loader; public class Myloader extends Loader { public var server:String; public function Myloader() { super(); } } } import Myloader; var myloader:Myloader = new Myloader(); myloader.server = server; myloader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadAva); myloader.load(new URLRequest(image_url)); tmp_mc.image_url = e.target.server; и в этом случае картинки не показываются. А если закомментировать строку tmp_mc.image_url = e.target.server;, то картинки показываются. |
|
|||||
|
Modus ponens
|
Потому что должно было быть примерно так:
import flash.display.Graphics; const SITE_URL:String = "http://site.ru/image_big_"; const IMAGES_PER_PAGE:int = 10; var field:TextField = new TextField(); field.x = 100; field.y = 10; field.autoSize = TextFieldAutoSize.LEFT; field.text = "testsdfwefwef"; this.addChild(field); var counter:int; var imagesLoaded:int; function completeHandler(event:Event):void { var info:LoaderInfo = event.target as LoaderInfo; var bitmap:Bitmap = info.loader.content as Bitmap; var bmpd:BitmapData = bitmap.bitmapData.clone(); var loader:Loader; var clone:Bitmap = new Bitmap(bmpd); clone.width = 75; clone.height = 75; clone.smoothing = true; clone.pixelSnapping = PixelSnapping.ALWAYS; field.text = String(bitmap); var container:MovieClip = new MovieClip(); container.addEventListener(MouseEvent.CLICK, this.clickHandler); container.addChild(clone); container.x = 100 * counter; container.y = 40; container.width = 75; container.height = 75; var canvas:Graphics = container.graphics; canvas.lineStyle(1, 0, 1); canvas.drawRect(0, 0, container.width, container.height); this.addChild(container); counter++; if (imagesLoaded < IMAGES_PER_PAGE) { loader = new Loader(); loader.contentLoaderInfo.addEventListener( Event.COMPLETE, this.completeHandler); loader.load(new URLRequest(SITE_URL + imagesLoaded + ".jpg")); imagesLoaded++; } } function clickHandler(event:Event):void { var clicked:DisplayObject = event.target as DisplayObject; if (clicked) { clicked.x += 50; field.text = clicked.x.toString(); } }
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 12.07.2010 в 00:06. |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 99
|
Какое событие передавать обработчику completeHandler?
Или просто completeHandler(null) ? |
|
|||||
|
4AM Games
|
completeHandler вызовут сами, когда надо
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 99
|
Кто вызовет?
|
|
|||||
|
Modus ponens
|
Тогда так:
const SITE_URL:String = "http://site.ru/image_big_"; const IMAGES_PER_PAGE:int = 10; var field:TextField = new TextField(); this.field.x = 100; this.field.y = 10; this.field.autoSize = TextFieldAutoSize.LEFT; this.field.text = "testsdfwefwef"; this.addChild(this.field); var counter:int; var imagesLoaded:int; function completeHandler(event:Event):void { var info:LoaderInfo = event.target as LoaderInfo; var bitmap:Bitmap = info.loader.content as Bitmap; var bmpd:BitmapData = bitmap.bitmapData.clone(); var clone:Bitmap = new Bitmap(bmpd); clone.width = 75; clone.height = 75; clone.smoothing = true; clone.pixelSnapping = PixelSnapping.ALWAYS; this.field.text = String(bitmap); var container:MovieClip = new MovieClip(); container.addEventListener(MouseEvent.CLICK, this.clickHandler); container.addChild(clone); container.x = 100 * this.counter; container.y = 40; container.width = 75; container.height = 75; var canvas:Graphics = container.graphics; canvas.lineStyle(1, 0, 1); canvas.drawRect(0, 0, container.width, container.height); this.addChild(container); this.counter++; if (imagesLoaded < IMAGES_PER_PAGE) this.loadNext(); } function loadNext():void { var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener( Event.COMPLETE, this.completeHandler); loader.load(new URLRequest(SITE_URL + this.imagesLoaded + ".jpg")); this.imagesLoaded++; } function clickHandler(event:Event):void { var clicked:DisplayObject = event.target as DisplayObject; if (clicked) { clicked.x += 50; this.field.text = clicked.x.toString(); } }
__________________
Hell is the possibility of sanity |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:55. |
|
|
« Предыдущая тема | Следующая тема » |
|
|