enep
@enep
IT- Ученый

Не работает скрипт?

Вот мой скрипт
$(document).ready(function () {

			function symbol(_char, _dpath) {
				this.char = _char;
				this.path = _dpath;
			}

			var svgfont = [];
			var svgfontweidth = 0;
			var namefont = "";
			var view = SVG("preview")
				.size($("#preview").width(), $("#preview").height());
			function addGlyphToPath(c,d) {
				svgfont.push(new symbol(c,d));
			}
			function setfontweidth(fw) {
				svgfontweidth = fw;
			}
			function caclulate() {
				
			}
			function getPathByChar(sym) {
				console.log("------>"+sym)
				console.log("getPathByChar"+svgfont.length)
				for(var i = 0;i < svgfont.length;i++) {
					if(svgfont[i].char == sym) {
						console.log("------>"+svgfont[i].path)
						return svgfont[i].path;
					}
				}
			}
			function drawString(drawdesc,str) {
				var shift = 5;
				var svggroup = drawdesc.group();
				svggroup.scale(0.03,-0.03).translate(5,55);
				for(var i=0;i<str.length;i++) {
					if(str[i] == " ") {
						shift = shift + (svgfontweidth / 2);
					} else {
						var path = svggroup.path(getPathByChar(str[i])).translate(shift,55);
						console.log(getPathByChar(str[i]));
						shift = shift + path.width();
						drawdesc.add(path);
					}
					
				} 
			}
			var self = this;
			var getSVGPath = function (svgdata) {
				var _this = this;
						setfontweidth(parseInt($(svgdata).find("font-face ").attr('font-weight')));
						$(svgdata).find("glyph").each(function(){ 
							var unicode = $(this).attr('unicode');
							var dpath = $(this).attr("d");
							addGlyphToPath(unicode,dpath);
						})
			}

			function loadfont(self,svgUrl) {
				var _this = self;
				$.ajax({
					type:"get",
					url:svgUrl,
					dataType:"xml",
					success:getSVGPath
	
				})
			}

			function update() {
				var namefont = $("#selFont").val();
				var size = parseInt($("#fontSize").val());
				var type = $("#selType").val();
				var text = $("#node").val();
				
				console.log(namefont);
				loadfont(this,"svgfonts/" + namefont + ".svg");
				drawString(view,text);
				
			}


			update();
			console.log("root"+svgfont.length);
			$("#node").keyup(update);
			$("#selFont").click(function () {
				$(this).bind("change", update);
			});
		});


Мне нужно сохранить в массиве svgfont все glyph'ы
сам svg загружается но не хочить сохраняться в массиве, что бы потом прочитать их

помогите люди добрые
  • Вопрос задан
  • 177 просмотров
Пригласить эксперта
Ответы на вопрос 1
Lobotomist
@Lobotomist
Software Developer
Получение svg у вас асинхронное, а console.log("root"+svgfont.length); вы выводите сразу после update();. В этот момент в массив svgfont еще ничего не помещено.
Если проблема не только в этом - ставьте console.log во все функции и смотрите, что вызывается, в какой последовательности, с какими параметрами. Так вы увидите, что именно работает не так, как вы ожидаете.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы