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

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

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

Регистрация: Jan 2006
Сообщений: 179
По умолчанию Работает в cs4 и в сs5 ошибка

Есть класс которые отражает изюражения в tile list и ещё добавляет кнопки управлени

Код AS3:
package com {
 
	import fl.controls.listClasses.CellRenderer;
	import fl.controls.listClasses.ICellRenderer;
	import fl.controls.listClasses.ListData;
	import fl.controls.listClasses.TileListData;
	import fl.containers.UILoader;
	import fl.core.InvalidationType;
	import fl.core.UIComponent;
	import flash.display.Graphics;
	import flash.display.Shape;	
	import flash.events.IOErrorEvent;
	import flash.events.MouseEvent;
	import flash.display.Sprite; 
	import flash.utils.getDefinitionByName;
	import flash.display.SimpleButton;
 
	[Style(name="selectedSkin", type="Class")]
	[Style(name="textPadding", type="Number", format="Length")]
	[Style(name="imagePadding", type="Number", format="Length")]
	[Style(name="textOverlayAlpha", type="Number", format="Length")]
 
	public class ImageCell extends CellRenderer implements ICellRenderer {
 
		protected var textOverlay:Shape;
		protected var loader:UILoader;
		protected var container:Sprite;
		private var menu:Sprite;
		private var deleteB:SimpleButton;
		private var rightB:SimpleButton;
		private var leftB:SimpleButton;
 
 
		private static var defaultStyles:Object = {
												imagePadding:1,
												textOverlayAlpha:0.5
												};
 
		public static function getStyleDefinition():Object {
			return mergeStyles(defaultStyles, CellRenderer.getStyleDefinition());
		}
 
 
		public function ImageCell() {
			super();
 
			loader = new UILoader();
			container = new Sprite();
			loader.autoLoad = true;
			loader.scaleContent = true;
			container.addChild(loader);
			addChild(container);	
 
			var cl:Class = getDefinitionByName("deleteB") as Class;
			deleteB = new cl();
 
			var cl2:Class = getDefinitionByName("rightB") as Class;
			rightB = new cl2();
 
			var cl3:Class = getDefinitionByName("leftB") as Class;
			leftB = new cl3();
 
			deleteB.addEventListener (MouseEvent.CLICK, deleteImage);
			leftB.addEventListener (MouseEvent.CLICK, turnLeft);
			rightB.addEventListener (MouseEvent.CLICK, turnRight);	
		}
 
		private function deleteImage(event:MouseEvent):void {
			data.data.action = "delete";
		}
 
		private function turnLeft(event:MouseEvent):void {
			data.data.action = "turnLeft";	
		}
 
		private function turnRight(event:MouseEvent):void {
			data.data.action = "turnRight";
		}			
 
		override public function get listData():ListData {
			return _listData;
		}
 
 
		override public function set listData(value:ListData):void {
			_listData = value;
			label = _listData.label;
			var newSource:Object = (_listData as TileListData).source;
			if (source != newSource) { // Prevent always reloading...
				source = newSource;
			}
		}
 
		public function get source():Object { 
			return loader.source;
		}
 
		public function set source(value:Object):void {
			loader.source = value;
		}
 
		override protected function configUI():void {
			super.configUI();
 
			textOverlay = new Shape();
			var g:Graphics = textOverlay.graphics;
			g.beginFill(0x66CC99);
			g.drawRect(0,0,50,50);
			g.endFill();
		}
 
		override protected function draw():void {
			super.draw();
		}
 
		override protected function drawLayout():void {
			var imagePadding:Number = getStyleValue("imagePadding") as Number;
			loader.move(imagePadding, imagePadding);
 
			var w:Number = width-(imagePadding*2);
			var h:Number = height-imagePadding*2;
			if (loader.width != w && loader.height != h) {
				loader.setSize(w,h);
			}
			loader.drawNow(); // Force validation!
 
			if(data.data.menu==true) {
				menu = new Sprite();
				this.mouseChildren=true;
				textOverlay.x= imagePadding+((width-imagePadding*2-container.width)/2);		
				textOverlay.height = 22;
				textOverlay.y = imagePadding+((height-imagePadding*2-container.height)/2)+container.height-textOverlay.height;
				textOverlay.width = container.width;
				textOverlay.alpha = getStyleValue("textOverlayAlpha") as Number;				
 
				deleteB.x = textOverlay.x+container.width-26;
				deleteB.y = textOverlay.y+3;			
 
				rightB.x = textOverlay.x+31;
				rightB.y = textOverlay.y+3;
 
				leftB.x = textOverlay.x+10;
				leftB.y = textOverlay.y+3;
 
				menu.addChild(textOverlay);
				menu.addChild(leftB);
				menu.addChild(rightB);
				menu.addChild(deleteB);
				addChild(menu);
			} else
				loader.alpha=0.7;
		}
	}
}
При попытке всё скомпилить с cs5 пошла оишбка

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at com::ImageCell()
at fl.core::UIComponent/getDisplayObjectInstance()
at fl.controls::TileList/drawList()
at fl.controls::TileList/draw()
at fl.core::UIComponent/callLaterDispatcher()

Не приложу всё вроде бы верно а работать не хочет

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

Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
Ошибка, судя по стеку, у вас в ImageCell... Гляньте, все ли определения классов проходят нормально. Проведите проверку по отдельности (для каждого создания экземпляра), и посмотрите, что у вас вызывает ошибку...

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

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

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


 


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


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