![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2009
Сообщений: 30
|
Сделал такую вот програмку, узкопрофильную для проверки спл на вертолётах Ми-8, Ми-24. Надоело пальцем по графикам возить, да и в actionscrpt-е третьем заодно попрактиковался.Первое, что сделал на AS 3.0 в чистом коде.
www.demonium.com.ua/spl.swf |
|
|||||
|
блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
|
Че делать то?
Цитата:
|
|
|||||
|
Регистрация: Feb 2009
Сообщений: 1,195
|
Ума не приложу, ну как можно додуматься подтверждать ввод клавишами в поле ввода только кликом по кнопке? Почему пользователь (вы) должен разрываться между клавиатурой и мышью в таких элементарных действиях?
|
|
|||||
|
блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
|
Я, кстати, класс поля для вода вещественных чисел писал для своей курсовой. Может кому пригодиться.
package gui { import flash.display.Sprite; import flash.events.TextEvent; import flash.text.*; public class DigitField extends Sprite { private var text:TextField; public function DigitField(caption:String = null) { mouseEnabled = false; text = new TextField(); addChild(text); text.x = 0; text.y = 20; text.defaultTextFormat = new TextFormat("_typewriter", 14); text.autoSize = TextFieldAutoSize.NONE; text.width = 100; text.height = 20; text.background = true; text.border = true; text.type = TextFieldType.INPUT; text.addEventListener(TextEvent.TEXT_INPUT, onInput); text.maxChars = 10; if (caption != null) { var label:TextField = new TextField(); addChild(label); label.text = caption; label.defaultTextFormat = new TextFormat("Tahoma", 12); label.selectable = false; label.autoSize = TextFieldAutoSize.LEFT; } } private function onInput(e:TextEvent):void { var txt:String = e.text; var str:String = ""; for (var i:int = 0; i < txt.length; i++) { var char:String = txt.charAt(i); if (isDigitChar(char) || ((char == "." || char == ",") && (dotIndex(text.text) < 0 || dotIndex(text.selectedText) >= 0) && dotIndex(txt) == i)) { str += char; } } e.preventDefault(); if (str != "") { text.replaceSelectedText(str.substr(0, 10 - (text.length - Math.abs(text.selectionEndIndex - text.selectionBeginIndex)))); } } private function dotIndex(str:String):int { var id1:int = str.indexOf("."); var id2:int = str.indexOf(","); return (id1 < 0) ? id2 : (id2 < 0) ? id1 : (id1 < id2) ? id1 : id2; } public function get value():Number { var val:Number = Number(text.text.replace(",", ".")); return isNaN(val) ? 0 : val; } private static function isDigitChar(char:String):Boolean { var charCode:Number; charCode = char.charCodeAt(); return (charCode >= 48 && charCode <= 57); } } } |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 30
|
эт в принципе и всё.
Просто давление надо было вводить между 0.1 и 0.8 Надо доработать ограничение ввода, не может там Nan вылезать. Я понимаю, что это бредом кажется, но на работе помогает. Добавлено через 1 минуту согласен на все 100, надо ещё кнопочку enter на ввод добавить Добавлено через 8 минут Цитата:
)Последний раз редактировалось siver; 24.07.2009 в 23:46. |
|
|||||
|
[+6 23.11.09]
|
не понятно чё надо делать?
|
|
|||||
|
Регистрация: Feb 2009
Сообщений: 30
|
ВВодить значения, которые просит. Потом результат отрисовывает после нажатия кнопки расчёт
|
|
|||||
|
Регистрация: Nov 2008
Сообщений: 205
|
Лучше было - бы, чтобы значения вводились не последовательно, а в форму и не пропадали после ввода.
|
|
|||||
|
Регистрация: Feb 2009
Сообщений: 30
|
а они и не пропадают.
Между графиками висят после ввода. |
|
|||||
|
Цитата:
Типа: package gui {
import flash.display.Sprite;
import flash.events.TextEvent;
import flash.text.*;
public class DigitField extends Sprite {
private var text:TextField;
private const DIGITS_ONLY:String="0-9";
private const DIGITS_AND_DOTS:String="0-9.,";
public function DigitField(caption:String = null) {
mouseEnabled = false;
text = new TextField();
addChild(text);
text.x = 0;
text.y = 20;
text.defaultTextFormat = new TextFormat("_typewriter", 14);
text.autoSize = TextFieldAutoSize.NONE;
text.width = 100;
text.height = 20;
text.background = true;
text.border = true;
text.type = TextFieldType.INPUT;
text.addEventListener(TextEvent.TEXT_INPUT, onInput);
text.maxChars = 10;
text.restrict=DIGITS_AND_DOTS;
if (caption != null) {
var label:TextField = new TextField();
addChild(label);
label.text = caption;
label.defaultTextFormat = new TextFormat("Tahoma", 12);
label.selectable = false;
label.autoSize = TextFieldAutoSize.LEFT;
}
}
private function onInput(e:TextEvent):void {
if(e.text.indexOf(".")!=-1||e.text.indexOf(",")!=-1){
e.target.restrict=DIGITS_ONLY;
}else{
e.target.restrict=DIGITS_AND_DOTS;
}
}
public function get value():Number {
var val:Number = Number(text.text.replace(",", "."));
return isNaN(val) ? 0 : val;
}
}
}
Последний раз редактировалось crazyone; 26.07.2009 в 17:31. |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:00. |
|
|
« Предыдущая тема | Следующая тема » |
|
|